Я использую 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.');
}
Спасибо за твою помощь.
Я решил эту проблему с помощью команды 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.');
}
Других решений пока нет …