Создание и использование команд Laravel 4
РЕДАКТИРОВАТЬ: Выяснил, где я ошибся, и поставил ответ в конце
Я пытаюсь создать команду Laravel, я вижу, что она значительно изменилась из "задач" в Laravel 3. Однако я не могу заставить ее работать. Это шаги, которые я предпринял:
Команда php artisan: выполните импорт
Возвращает
Команда успешно создана
Затем создается файл в каталоге команд, и я немного изменил его, чтобы вернуть "Hello World" так:
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class Import extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'command:import';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return void
*/
public function fire()
{
return 'Hello World';
}
/**
* Get the console command arguments.
*
* @return array
*/
protected function getArguments()
{
return array(
array('example', InputArgument::REQUIRED, 'An example argument.'),
);
}
/**
* Get the console command options.
*
* @return array
*/
protected function getOptions()
{
return array(
array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null),
);
}
}
Однако, когда я пытаюсь запустить команду следующим образом:
php artisan Импорт
Я получаю следующую ошибку:
[InvalidArgumentException] Команда "Импорт" не определена.
Я пробовал его с и без капиталов, а также назвал его "ImportCommand", так как документация называет его команду "FooCommand", но не повезло.
Любая помощь будет наиболее оценена.
Ответы
Ответ 1
Собственно понял это. Далее в документации указывается, что вы должны зарегистрировать свою команду в "app/start/artisan.php", используя следующий метод:
Artisan::add(new import);
Также имя, которое вы даете в своем классе команд, является значительным, как то, что вам нужно использовать для его вызова. Поэтому я должен был называть его так:
php artisan command:import
Одна последняя вещь. То, что возвращает fire(), не имеет значения, чтобы возвращать строки, вы должны их откликнуться.
Ответ 2
попробуйте это.
protected function getArguments()
{
return [];
}
protected function getOptions()
{
return [];
}
также добавьте это в /app/start/artisan.php
Artisan::add(new ParseCommand);
затем запустите команду "Корневой каталог"
./artisan command:import;
Ответ 3
В новых версиях Laravel нет команды import
. Вам просто нужно сделать следующие две вещи:
-
Зарегистрируйте свою команду в app/start/artisan.php
:
Artisan::add(new Import);
-
Запустите команду в Artisan:
php artisan command:name Import
Ответ 4
есть неправильное понимание команд Artisan из-за используемой формулировки.
В вашем случае вы выбираете: "command: import" как имя одной из ваших команд "Import".
Подумайте об этом как об объекте, используя методы.
Если "Импорт" имеет много команд:
вы можете использовать как имя команды > protected $name = 'import: csv';
другая команда будет > protected $name = 'import: txt';
и > protected $name = 'import: contacts';
поэтому ваши команды с природой "Импорт" лучше организованы.
и когда вы запрашиваете, вы видите, что ваши команды организованы как единый объект.
Если нет,
и у вас есть только одна команда, тогда дайте вашей команде одно четкое имя. protected $name = 'import';