symfony 4

symfony yaml Как получить значения параметров из конфига

В Symfony 4.3

У вас есть ямл-конфиг (напр. config/services.yaml):

parameters:
    locale: 'ru'
    frontend:
        format:
            datetime: 'yyyy-mm'
    datetime: 'yyyy-mm-dd'

Тогда в контроллере в зависимости от уровня вложенности доступ к параметрам можно получить так:

webpack encore Настройка пседонима пути для файлов javascript

В Symfony 4.3 можно использовать вызов (webpack.config.js):

Encore
    .addAliases({ // псевдонимы путей для более удобной загрузки 
// вне зависимости от уровня вложенности файл в приложении
        '@universal': path.resolve(__dirname, 'assets/js/react/components/universal'),
      },
    );

После чего вместо путей типа:

import FormSection from '../../../universal/form/FormSection'

использовать:

react Warning: Invalid DOM property class Как разрешить обычные html атрибуты

Warning: Invalid DOM property class

Известно что вместо напр. class в React надо писать className,
подобные проблемы можно убрать используя babel-plugin-react-html-attrs

Стандартная установка идет так:

symfony react.js Как добавить его с помощью npm (без yarn)

Ставим 4-ре пакета двумя командами:

npm install --save-dev @babel/preset-react
npm install  react react-dom prop-types

далее правим webpack.config.js:

// webpack.config.js
// ...

Encore
    // ...
+     .enableReactPreset()
;

ПРИМЕЧАНИЯ:

symfony The autoloader expected class ... to be defined in file Ошибка. Файл без класса

The autoloader expected class ... to be defined in file .. The file was found but the class was not in it, the class name or namespace probably has a typo in...

Ошибка возникает, когда вы просто закидываете, напр. в директорию контроллеров php-файл в котором нет класса (ну и неймспейса).

Временное решение

В моем случае в этом файле располагались аннотации всех контроллеров API, поэтому в качестве быстрого решения я добавил болванку под ожидаемый симфони класс (ну и неймспес для него), в итоге файл выглядит как-то так:

symfony Как игнорировать некоторые аннотации (doctrine vs swagger)

Ошибка вида:

An exception has been thrown during the rendering of a template [Semantical Error] The annotation ... in class ... was never imported. Did you maybe forget to add a use statement for this annotation? in .... (which is being imported from .../config/routes/annotations.yaml). Make sure annotations are installed and enabled)

Решение

В качестве решения можно использовать в любом стартовом файле проекта ( в symfony 4 можно использовать config/bootstrap.php) код, вида:

symfony Вывод сообщений сообщений исключений (ошибок) в формате JSON. Разные форматы для разных контроллеров

Symfony 5

Если используете аннотации, то в файле:

config/routes/annotations.yaml

можно написать так:

controllers:
    resource: ../../src/Controller/
    type: annotation
api-controllers:
    resource: ../../src/Controller/Api
    type: annotation
    defaults:
        _format: json

В данном случае контроллеры из директории

../../src/Controller/Api  

в случае возникновения в них исключительной ситуации будут выводить сообщения именно в формате json.

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

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

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

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

    # 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.

Переделал с

Pages

Subscribe to RSS - symfony 4