Symfony — фреймворк для языка программирования PHP, который структурирует и упрощает написание кода.
Для установки Symfony предварительно нужно установить Composer.
Ссылка на установку Symfony на официальном сайте:
https://symfony.com/doc/current/setup.html
Есть 2 способа установки: для обычного веб приложения и для микросервисов или API. Далее будет установка директорий для типового веб сайта.
Переходим в папку из которой хотим установить, это может быть папка Sites:
Далее ставим каркас проекта:
Для запуска проекта нужен вебсервер, например MAMP PRO.
Если всё настроено верно, то сайт откроется по адресу:
На этом установка Symfony завершена.
Собственный сервер symfony
Устанавливаем собственный сервер для symfony. Он хорош тем, что он показывает информацию для отладки как в консоли, так и на странице браузера. И в случае ошибок, вместо пустой страницы покажет отладочную информацию.
Установка сервера:
По умолчанию он работает на
Запускаем сервер
Ошибка
Если при создании тестовой страницы (по гайду symfony) может быть следующая ошибка:
No route found for «GET /lucky/number»
1. Можно попробовать сбросить кэш
2. Проверить адрес. На собственном сервере, когда запущена команда bin/console server:run он будет таким:
3. В файле routes.yaml изменить путь на
path: /
И запустить главную страницу:
На стороннем сервере
Каждый раз запускать сервер может быть лень. Тогда в помощь общий локальный веб-сервер на компьютере.
Как установить веб-сервер на Mac OS.
После установки сервера, для работы ссылок, создаем в директории:
файл .htaccess. Внутри прописываем правила реврайта:
RewriteEngine On
RewriteBase /symfony/public/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /symfony/public/index.php [L]
</IfModule>
Теперь у нас все ссылки будут работать по адресу:
Для роутинга lucky/number (из мануала по symfony) адрес будет такой:
А вообще оба сервера могут жить одновременно и не мешать друг другу. Например, если потребуется отладочная информация. Запускаем сайт по адресу стандартного сервера и если надо запускаем и сервер symfony. Внизу сайта видим отладочную информацию:
Устанавливаем автоматическую прописку роутинга
Установка
Код
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class PageController
{
/**
* @Route("/lucky/number")
*/
public function number()
{
$number = random_int(0, 100);
return new Response(
'<html><body>Lucky number: '.$number.'</body></html>'
);
}
}
А если для последующего вывода через шаблонизатор:
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class Tables extends AbstractController {
/**
* @Route("/test/")
*/
public function homepage()
{
return $this->render('home.html.twig', [
]);
}
}
Устанавливаем Webpack
Для упрощения работы с Node.js в Symfony сразу устанавливаем yarn с помощью HomeBrew.
Устанавливаем webpack
yarn install
Компиляция для локальной разработки
Компиляция при изменении файлов
На продакшен
Включаем SASS
В файле webpack.config.js расскоментируем строку
А в файле assets/js/app.js добавляем подключаемый файл стилей:
После запуска команд компиляции yarn encore dev могут возникнуть ошибки.
Ошибка
При запуске компиляции ошибка:
Running webpack …
Error: Install sass-loader & node-sass (or sass) to use enableSassLoader()
yarn add sass-loader@^7.0.1 node-sass —deverror Command failed with exit code 1.
Запускаем команду из ошибки:
Если видим ошибки вида
The engine «node» is incompatible with this module. Expected version «>=7.0.0»
Обновляем (или переустанавливаеам на новую) версию Node.js.
После этого заново запускаем команду:
Теперь должно быть все ок.
Подключаем стили и js на страницу
Подключаем стили на странице шаблонизатора:
Подключение:
<html>
<head>
{% block stylesheets %}
{{ encore_entry_link_tags('app') }}
{% endblock %}
</head>
<body>
{% block javascripts %}
{{ encore_entry_script_tags('app') }}
{% endblock %}
Надо учитывать, что по умолчанию файлы подключаются таким образом:
а если вы используете сервер по умолчанию, то адрес нужен другой:
И чтобы изменить путь компиляции надо изменить его в файле
// directory where compiled assets will be stored
.setOutputPath('/symfony/public/build/')
// public path used by the web server to access the output path
.setPublicPath('/build')
Подключение jQuery к Symfony 4
Качаем последнюю версию jQuery. Кладем ее в папку public/vendor.
Подключаем в файле шаблонизаторе так: