如何解决使用Shell调用前端控制器yii2无法正常工作
我是Yii2 Framework的新手,我正试图调用位于下面的前端文件夹中的控制器
htdocs/project/frontend/controllers/MyController.php
我要调用的方法是
actionTest_method()
在Terminal(项目根目录中),我正在写
php yii my/test_method
我尝试过
php yii frontend/controllers/my/test_method
但是没用 错误,我收到InvalidRouteException
解决方法
首先。您无需从控制台调用Frontend控制器。如果您想这样做。您可以使用带有以下URL模式的curl命令。 Yii2 URL routing
curl GET 'example.com/my/action-name'
但是,根据Yii2指南,您可以使用console commands从控制台运行脚本。
因此您的控制器应位于命令目录内。
这是Yii2基本应用模板的helloController.php
。
<?php
/**
* @link http://www.yiiframework.com/
* @copyright Copyright (c) 2008 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
namespace app\commands;
use yii\console\Controller;
use yii\console\ExitCode;
/**
* This command echoes the first argument that you have entered.
*
* This command is provided as an example for you to learn how to create console commands.
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
class HelloController extends Controller
{
/**
* This command echoes what you have entered as the message.
* @param string $message the message to be echoed.
* @return int Exit code
*/
public function actionIndex($message = 'hello world')
{
echo $message . "\n";
return ExitCode::OK;
}
}
如您所见,它扩展了yii\console\Controller
,它具有运行具有Yii2功能的控制台命令的功能。
使用此示例代码。您只需要运行
php yii hello
脚本将输出
hello world
根据您的情况,在命令目录中创建一个扩展MyController.php
的{{1}}类。
输入以下代码。
yii\console\Controller
然后运行
<?php
namespace app\commands;
use yii\console\Controller;
class MyController extends Controller
{
public function actionTest_method()
{
echo 'I am test method';
}
}
在根目录中。
,您的控制台控制器必须位于htdocs / project / console / controllers / 还要检查您的控制台配置中的controllerNamespace
,小注:如果它是“高级”模板-控制台控制器位于“控制台”文件夹中,否则为“基本”-位于“命令”文件夹中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。