Laravel — передавайте аргументы php ремесленнику

У меня есть интересная проблема, которую я хотел бы попытаться решить. Laravel имеет встроенный «Режим обслуживания», который можно активировать, позвонив php artisan down в корневой папке приложения. В app / start / global.php есть настройка, где вы можете назначить представление или ответ, который он делает. В моем приложении я делаю это:

App::down(function()
{
// ETA Format: YYYY-MM-DD HH-MM-SS. Leave as "" to pass indeterminate time.
return View::make("maintenance", array("code" => 503,
"message" => "Service Unavailable",
"eta" => "2014-11-07 13:30:00"));
});

Это показывает хороший, чистый экран «Мы скоро вернемся» с сообщением о состоянии и предполагаемым временем до завершения. Обратите внимание, что я жестко закодировал некоторые параметры, которые передаются в представление:

code -> The http status code I want displayed
message -> A message about the nature of the disruption
eta -> A timestamp of the estimated completion time

Мне интересно, есть ли способ, которым я могу изменить php artisan down где я могу передать некоторые параметры? Например, я хочу попробовать что-то вроде этого:

php artisan down --eta="2014-11-07 13:30:00" --code="503"

Поэтому мне не нужно вручную кодировать эти параметры каждый раз, когда я переводю приложение в режим обслуживания. Я читал документы по Laravel, касающиеся создания команд ремесленников, но нет документации по изменению существующих команд, их дублированию и добавлению функциональности.

Если у кого-то есть понимание этого, пожалуйста, дайте мне знать.

0

Решение

Попробуйте создать новую команду, которую вы бы назвали (например, app: down), которая записывает эти параметры в файл, а затем вызывает внутреннюю команду laravel down, например,

public function fire() {
$data = json_encode($this->option());
file_put_contents('/tmp/down.txt', $data);
$this->call('down');
}

Тогда вы можете подобрать их в коде представления …

    $data = json_decode(file_get_contents('/tmp/down.txt'), true);
return View::make('maintenance', $data);
1

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

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