symfony4

symfony4 -- Авторизация - Редирект на /login, если доступ закрыт (redirect if access denided)

Задача

Переносить пользователя на страницу авторизации, если он пытается перейти на страницу, где у него недостаточно прав.

Решение

Если Вы используете стандартный механизм авторизации Симфони, можно сделать с помощью конфигурационного файла:

symfony4 - Генерация Сущности (generate Entity)

В Symfony 4 можно сгенерировать сущность (Entity) с помощью консольной команды.

Как сделать

  1. Устанавливаем MakerBundle, если не установлен:

    composer require symfony/orm-pack
    composer require symfony/maker-bundle --dev

  2. Вводим в консоли:

    php bin/console make:entity

  3. Далее отвечаем на вопросы:
    • Class name of the entity to create or update (e.g. VictoriousElephant):

      Вводим Имя класса

symfony4 Переводчик (Translator) -- Перевод. Перевод значения с параметром

Простейший перевод можно организовать в Симфони с помощью компонента Переводчик.

  1. Устанавливаем:

    composer require symfony/translation

symfony4 Ошибка Cannot autowire service \".service_locator.dXw1rRy\"...

Ошибки

.. Cannot autowire service \".service_locator.dXw1rRy\" ...

... but no such service exists. You should maybe alias this interface to one of these existing services ...

Подобные ошибки у меня возникали в процессе создания резольвера аргументов контроллеров.

Решение

Решило проблему правильная конфигурация резольвера:

symfony4 Резольвер аргументов (Argument Resolver)

Резольвер в общем случае используется для обработки агрументов контроллера непосредственно ПЕРЕД запуском контроллера.

Например, я использую его, чтобы определить, какой сервис использовать для работы в контроллере. Логика работы обоих сервисов одинаковая, поэтому можно универсализировать код нашего контроллера, а логику выбора сервиса "вынести" за контроллер - в резольвер.

symfony4 Ошибка при запуске тестирования -- You have requested a non-existent service "test.client"

Ошибка

После обновления symfony до версии 4.1 возникла ошибка при запуске тестовм (запускаю при помощь консольной команды php bin/phpunit):

PHP Fatal error: Uncaught Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException: You have requested a non-existent service "test.client". in /home/julia/Projects/symfony-rest-starter/vendor/symfony/dependency-injection/Container.php:274

symfony4 -- Функциональные тесты (Functional Tests). Что это. Пример.

Функциональные тесты нужны, функциональные тесты важны:

symfony4 Form -- вывести связанную сущность в виде выпадающего списка select

В процессе создания админки для интернет магазина мне потребовалось вывести для заполнения не только текстовые поля объекта Product, но и все имеющиеся в БД фирмы в виде списка.

Это можно сделать так:

symfony4 Не работает автозаполнение даты в БД -- gedmo timestampable

Текст ошибки

Not null violation: 7 ERROR: null value in column "created_at" violates not-null constraint

Решение

Symfony4 теперь сам добавляет объявление объектов подключаемых зависимостей, и это расхолаживает). Возможно, вы, как и я, забыли настроить конфигурации stof/doctrine-extensions-bundle?

В файл /config/packages/stof_doctrine_extensions.yaml добавляем:

symfony 4 -- Конфигурация базы данных (Configurate Database)

Настройка подключения к БД

  1. В файле .env указываем данные подключения в таком формате:
    DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name"
  2. В файле config/packages/doctrine.yaml настраиваем подключение:
    doctrine:
        dbal:
            # configure these for your database server
            driver: 'pdo_postgresql'
            server_version: '9.4.15'
            charset: utf8

Источник

Subscribe to RSS - symfony4