icon Посты по тегу symfony

No commands defined in the "server" namespace - ошибка в Symfony 3.3, 3.4 при server:start

После обновления symfony на версию 3.3 и выше вы обнаружите, что при старте встроенного веб-сервера:

bin/console server:start

Команда server:start не отрабатывает, так как возникает ошибка "There are no commands defined in the "server" namespace.".

KnpMenuBundle: строим меню для категорий и подкатегорий в symfony 4

Меню-билдер в лучших традициях симфони лучше объявить как сервис.

Создаем сервис "объявим сервис app.knp.sidebar_menu в файле config/packages/knp_menu.yaml:

Содержимое config/packages/knp_menu.yaml:

knp_menu:
    twig:
        template: custom_knp_menu.html.twig

parameters:
    knp_menu.renderer.twig.options:
        currentClass: sel

services:
    app.knp.sidebar_menu:
        class: Knp\Menu\MenuItem
        factory: ['@App\Menu\MenuBuilder', createSidebarMenu]
        arguments: ["@request_stack"]
        tags:
            - { name: knp_menu.menu, alias: sidebar_menu }

 

symfony4 Пример использования ORMPurger для WebTestCase

В случае, если нам нужно протестировать экшены контроллера, при этом предварительно очистив данные из базы данных, можно использовать класс ORMPurger. Он является частью пакета doctrine/data-fixtures, который в свою очередь является зависимостью doctrine/doctrine-fixtures-bundle.

Таким образом, для использования ORMPurger нужно установить либо:

composer require --dev doctrine/doctrine-fixtures-bundle

Скорее всего doctrine-fixtures-bundle вам и нужен, чтобы можно было создавать fixtures.

Либо хотя-бы:

composer require --dev doctrine/data-fixtures

Теперь можно добавить код в тест, который является наследником WebTestCase.

self::bootKernel();

// returns the real and unchanged service container
$container = self::$kernel->getContainer();
$entityManager = $container->get('doctrine.orm.entity_manager');

$purger = new ORMPurger($entityManager);
$purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
$purger->purge();

 

PHP выполнить shell команду синхронно с timeout, ограничив время выполнения

Задача которую решаем — возможность из-под PHP-кода выполнить произвольную shell-команду (как через shell_exec) с возможностью задать timeout на команду.

Для чего задавать timeout для shell команды?

Timeout нужен в случае, если shell_exec на выполнении команды просто подвисает. Мы не можем никаким образом обернуть функцию shell_exec чтобы прервать его через заданное время и выбросить исключение.

PHP Shell exec if no timeout applied

НОВЫЕ ПОЛЬЗОВАТЕЛИ