2

CLIを介してアクションを実行しようとしています。アクションはUsersController::test()

だから、私はこれを実行します: php libraries/lithium/console/lithium.php \\app\\controllers\\UsersController test

しかし、私はこのエラーに遭遇し続けます: PHP Fatal error: Call to undefined method lithium\console\Request::get() in /var/www/example.com/libraries/lithium/action/Controller.php on line 154

私は何が間違っているのですか?

4

1 に答える 1

5

参照については、 http://li3.me/docs/lithium/consoleを参照してください。

私の知る限り、コマンド ラインからコントローラーを直接呼び出すことはできません。あなたのエラーからですが、何かをしようとしているようです。

代わりに、から拡張するクラスを作成し、それ\lithium\console\Commandを に配置しnamespace app\extensions\commandます。たとえば、そのクラスに名前を付けUsersます。そのクラス内で、test()cli 経由でコマンドを呼び出したときに実行されるメソッドを作成します。

これで、li3 (またはlithium.php) を実行すると、使用可能なすべてのコマンドが出力され、リストに自分のコマンドが表示されるはずです。li3 users testビンパスに追加した場合は、呼び出して実行する必要がありlithium/console/li3ます。php -f path/to/lithium.php -- users testまたは、同じことを行う必要がある呼び出しを行うこともできます。を省略した場合、クラスtest内で run() というメソッドが検索され、それが呼び出されます。app\extensions\console\Users

コントローラーのインスタンスを作成して test() メソッドを呼び出すこともできますが、ご覧のとおり、Web ブラウザーから実行するときに使用できる Request クラスは、コマンドラインから実行するときの Request クラスとは異なります。コントローラー メソッドでビジネス ロジックを取得して別のクラスに移動し、コントローラーからそのメソッドに要求パラメーターを渡す方がよいでしょう。次に、コンソール コマンド クラスから、同じ集中型メソッドを同様に呼び出します。

于 2013-02-06T02:58:10.423 に答える