symfony 4

symfony Кеширование - как сделать

Простой пример кеширования запроса к API с помощью кеш-контракта (см метод getClients()):

symfony yaml Где хранить секреты: ignore Как игнорировать и не хранить в репозитории важные данные (напр. для сервиса)

Можно ссылать на переменные окружения в ямле, например (пример конфигурации сервиса):

    # explicitly configure the service
    App\Service\VkApiClientService:
        arguments:
            $accountId: '%env(VK_ACCOUNT_ID)%'
            $apiVersion: '%env(VK_API_VERSION)%'
            $accessToken: '%env(VK_ACCESS_TOKEN)%'

а сами переменные задать в .env.local файле (которые держат в gitignore), например для примера выше значения переменных в этом файле можно задать так:

symfony service Передача параметров сервиса в yaml файле: must be null, an instance of..., you should configure its value

Проблема с передачей параметров пользовательскому сервису в sumfony 4:

Invalid service the value of argument "..." of method "...::__construct()" must be null, an instance of Symfony\Component\DependencyInjection\Reference or an instance of Symfony\Component\DependencyInjection\Definition, string given.

Переделал с

symfony Консольная команда для создания пользователя - пример

Создать простейшего пользователя можно так (если вы сделали все что до фикстур как тут, актуально как минимум для symfony 4.2
)

symfony 4 .env не переопределяется через .env.local (Access denied for user)

An exception occurred in driver: SQLSTATE[HY000] [1045] Access denied for user 'db_user'@'localhost' (using password: YES)

Не очень понятно как переопределить это значение:

DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name

значением из файл .env.local

Уточнение

Судя всему проблема наблюдается именно в консольной точке входа (bin/console) -- потому что там используется метод грузящий именно .env файл:

symfony4 Ошибка конфигурации БД (postgresql) -- invalid value for parameter "client_encoding": "utf8mb4"

Текст ошибки

SQLSTATE[22023]: Invalid parameter value: 7 ERROR: invalid value for parameter "client_encoding": "utf8mb4"

Решение

Ошибка появляется при попытке подключения к БД из-за неверно настроенной конфигурации (symfony 4). Реально установленный client_encoding - UTF8, а в конфиге остался стандартный utf8mb4.

Чтобы исправить ошибку, настройте конфигурации корректно.

symfony Attempted to call an undefined method named ... of class ... -- Ошибка

Attempted to call an undefined method named "render" of class "AppBundle\Controller\LuckyController"

или

Attempted to call method “getDoctrine” on class "../...Controller"

или

Attempted to call method “getParameter” on class "../...Controller"

Решение

Не забывайте унаследовать свой контроллер от стандартного:

[!] Symfony по-русски - Онлайн Справочник с примерами на русском языке

[начиная с версии 3]

Для начинающих

Subscribe to RSS - symfony 4