Для справки см. http://li3.me/docs/lithium/console.
Насколько я знаю, вызывать контроллеры напрямую из командной строки нельзя. Хотя судя по вашей ошибке, он пытается что-то сделать.
Вместо этого создайте класс, унаследованный от \lithium\console\Command
, и поместите его в namespace app\extensions\command
. Например, назовите этот класс Users
. Внутри этого класса создайте метод с именем test()
, который будет запускаться при вызове вашей команды через cli.
Теперь, когда вы запускаете li3 (или lithic.php), он должен вывести все доступные команды, и вы должны увидеть свою в списке. Вы бы вызвали li3 users test
, и это должно запустить его, если вы добавили lithium/console/li3
в свой путь к корзине. Или вы можете вызвать php -f path/to/lithium.php -- users test
, что должно сделать то же самое. Если вы пропустили test
, он будет искать метод с именем run() в вашем классе app\extensions\console\Users
и вызывать его.
Потенциально вы могли бы создать экземпляр вашего контроллера и вызвать метод test(), но, как вы видели, класс Request, доступный при запуске из веб-браузера, отличается от класса Request при запуске из командной строки. Вероятно, было бы лучше взять бизнес-логику в методе вашего контроллера и переместить ее в другой класс, а затем передать параметры запроса из вашего контроллера в этот метод. Затем из класса консольных команд вы аналогичным образом вызвали бы тот же централизованный метод.
person
rmarscher
schedule
06.02.2013