Php Yii2:如何在请求中更改controllerNamespace
我正在尝试更改我的Php Yii2:如何在请求中更改controllerNamespace,php,yii2,Php,Yii2,我正在尝试更改我的Yii::$app->controllerNamespace,如果controller类不存在 我扩展了UrlRule,并进行了一些检查,如果没有这样的类,switchcontrollerNamespace namespace libs\core; use Yii; use yii\web\UrlRule; class Gateway extends UrlRule { public function parseRequest($manager, $request)
Yii::$app->controllerNamespace
,如果controller类不存在
我扩展了UrlRule,并进行了一些检查,如果没有这样的类,switchcontrollerNamespace
namespace libs\core;
use Yii;
use yii\web\UrlRule;
class Gateway extends UrlRule
{
public function parseRequest($manager, $request)
{
$return = parent::parseRequest($manager, $request);
if($return) {
$className = strstr(ltrim($return[0], '/'), '/', true);
$params = Yii::$app->params;
if(class_exists($params['controllerNamespace'] . '\\' . ucfirst($className) . 'Controller')) {
Yii::$app->controllerNamespace = $params['controllerNamespace'];
} else {
Yii::$app->controllerNamespace = 'libs\\controllers';
}
}
return $return;
}
}
此方法正在主请求中工作:)
但是当我使用Yii:$app->runAction()
时,什么也没有发生:(
谢谢
另外,请告诉我是否有更好的方法让multiply
controllerNamesapce
?(不使用模块)为什么不简单地处理错误?为什么要这样做?您可以通过配置中的控制器映射来实现。