вызвать команду Artisan, у которой нет имени для опции - PullRequest
0 голосов
/ 26 мая 2018

Как мне выполнить команду, подобную этой, из контроллера?

Пакет, который я использую, который дает следующие команды ремесленника: https://github.com/JosephSilber/page-cache

php artisan page-cache:clear {slug}

Например, если введено вручную:

php artisan page-cache:clear about-us

Документы Laravel дают нам это: https://laravel.com/docs/5.6/artisan#programmatically-executing-commands

Artisan::call('email:send', [
    'user' => 1, '--queue' => 'default'
]);

Поскольку страница-кеш команды ремесленника: clear не принимает никаких именованных параметров, как отправить параметр slug вэто?

Я пробовал это:

Artisan::call('page-cache:clear ' . $content->slug);

И получить обратно эту ошибку:

Команда "кэш страницы: очистить кромку" не определена. «Вы имели в виду это?» Кэш страницы: очистить

Я также пробовал это:

Artisan::call('page-cache:clear', [$content->slug]);

Но тогда слаг не добавляется, и он вызывает php artisan page-cache:clear без слагов, поэтому этот пакет очищает все кэшированные файлы.

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Попробуйте
Artisan::call('page-cache:clear', ['slug' => $content->slug]);

0 голосов
/ 26 мая 2018

Добавить явное true в качестве значения параметра slug:

Artisan::call('page-cache:clear', [$content->slug => true]);

Редактировать

На самом деле вышеприведенное может работать только для --nameпараметры и вам может понадобиться это вместо:

Artisan::call('page-cache:clear', ['' => $content->slug]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...