Symfony hack — выполнение сценария оболочки для перезаписи yaml-файлов

Я использую akeneo pim, который использует symfony 3.4 для решения некоторых задач клиентов. Так что я впервые использую Symfony и столкнулся с некоторыми проблемами. Что мне нужно сделать, это создать пользовательский интерфейс, где пользователь может добавить свои собственные переводы для главного меню. И эти переводы поступают из файла конфигурации /translation/jsmessages.en.yml. Итак, я создал пакет, изменил файл yaml, и все почти готово. Но теперь, когда я изменяю файл yaml, мне нужно очистить кеш, сбросить переводы, запустить веб-пакет, иначе изменение текста меню не будет видно. Поэтому я хотел создать сценарий оболочки для этого. Что-то вроде этого:

public function indexAction()
{
(new YmlReader())->readYmlFile();

exec('rm -rf ./web/bundles/* ./web/css/* ./web/js/*');
exec('rm -rf web/js/translations/*');
exec('php bin/console pim:install:assets --env=prod');
exec('php bin/console assets:install --symlink web');
exec('php bin/console oro:translation:dump');
exec('yarn run webpack');

return $this->render('PimcWhiteLabelBundle:Default:index.html.twig');
}

Но это не работает, может быть, потому что он выполняет скрипт как пользователь www-данных, я не знаю. И сейчас я пытаюсь создать команду. Есть ли хороший способ сделать это через Symfony, если кто-то знает, каков наилучший способ сделать это в Symfony. Итак, я создал команду, мне просто нужно направление, как подойти к этому:

protected function execute(InputInterface $input, OutputInterface $output)
{
$argument = $input->getArgument('argument');

if ($input->getOption('option')) {
// my exec commands
}

$output->writeln('Command result.');
}

Спасибо за твою помощь.

1

Решение

Я решил эту проблему с помощью команды exec, она почему-то начала работать 🙂

protected function execute(InputInterface $input, OutputInterface $output)
{
exec('rm -rf web/js/translations/*');
exec('php bin/console pim:install:assets --env=prod');
exec('php bin/console assets:install --symlink web');
exec('php bin/console oro:translation:dump');
exec('yarn run webpack');

$output->writeln('Translations dumped successfully.');
}
0

Другие решения

Других решений пока нет …


Курсы программирования от Skillbox. Черная пятница!
Подробнее >>>
×