10

編集:どこが間違っていたのかを理解し、最後に答えを入れました

Laravel コマンドを作成しようとしていますが、Laravel 3 の「タスク」から大幅に変更されていることがわかります。しかし、実行できないようです。これらは私が取ったステップです:

php artisan コマンド:make Import

戻り値

コマンドが正常に作成されました

コマンドディレクトリにファイルが作成され、次のように「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 職人のインポート

次のエラーが表示されます。

[InvalidArgumentException] コマンド「インポート」が定義されていません。

ドキュメントではコマンドに「FooCommand」という名前が付けられているため、大文字の有無にかかわらず、「ImportCommand」という名前を付けてみましたが、うまくいきませんでした。

どんな助けでも大歓迎です。

4

4 に答える 4

17

実はこれでわかった。ドキュメントのさらに下には、次の方法を使用して「app/start/artisan.php」にコマンドを登録する必要があると記載されています。

Artisan::add(new import);

また、コマンド クラスで指定する名前は、それを呼び出すために使用する必要があるため、重要です。したがって、実際には次のように呼び出す必要がありました。

php artisan command:import

最後に 1 つ。fire() が返すものは重要ではありません。文字列を返すには、それらをエコーする必要があります。

于 2013-06-18T14:58:42.633 に答える
7

これを試して。

protected function getArguments()
{
    return [];
}

protected function getOptions()
{
    return [];
} 

これも追加/app/start/artisan.php

Artisan::add(new ParseCommand);

次に、ルートディレクトリでコマンドを実行します

./artisan command:import; 
于 2014-02-04T06:31:43.587 に答える
2

新しい Laravel バージョンにはimportコマンドがありません。次の2つのことを行うだけです。

  1. コマンドを に登録しますapp/start/artisan.php

    Artisan::add(new Import);
    
  2. Artisan でコマンドを実行します。

    php artisan command:name Import
    
于 2014-05-12T15:47:20.723 に答える