Javascript 检查是否存在任意控制器/操作
有没有办法检查控制器/动作是否存在任意组合?(不是当前的。) 类似于Javascript 检查是否存在任意控制器/操作,javascript,php,yii2,Javascript,Php,Yii2,有没有办法检查控制器/动作是否存在任意组合?(不是当前的。) 类似于Yii::$app->exist(控制器/动作) 是否有可能检查一下路线或其他什么 我需要的是检查参数是否作为 <?php echo Yii::$app->request->baseUrl.'/controller/action' ?> JavaScript通用函数在通过Ajax执行之前就已经存在。您可以使用方法\u exists检查这一点。就像这样: method_exists(Yii::$app
Yii::$app->exist(控制器/动作)代码>
是否有可能检查一下路线或其他什么
我需要的是检查参数是否作为
<?php echo Yii::$app->request->baseUrl.'/controller/action' ?>
JavaScript通用函数在通过Ajax执行之前就已经存在。您可以使用方法\u exists检查这一点。就像这样:
method_exists(Yii::$app->controllerNamespace . $controllerName, 'action' . ucfirst($actionName));// $actionName with first lette is uppercase
欲知更多-
编辑:
或者您可以使用以下方式:
$controller = Yii::$app->createController('controller');//
if (!$controller !== null && method_exists($controller, 'action')) {
echo 'controller/action is allow :)';
}
或者我发明了更好的使用yii2api的方法:
$controller = Yii::$app->createController('controller');//
if (!$controller !== null && $controller->hasMethod('action'))) {
echo 'controller/action is allow :)';
}
受@vitalik_74的启发,在参考和测试后,我在Yii 1.1中发现了这部作品:
函数isActionExistsInController($actionId、$controllerId、$moduleId=null){
$route=$moduleId?$moduleId.'/'.$controllerId.'/'.$actionId:$controllerId.'/'.$actionId;
$controller=Yii::app()->createController($route);
返回!!$controller;
}
最可靠的方法是创建操作实例
public function actionExists($controllerId, $actionId, $module = null)
{
if ($module === null) {
$module = Yii::$app;
}
$controller = $module->createControllerByID($controllerId);
if ($controller === null) {
return false;
}
$action = $controller->createAction($actionId);
if ($action === null) {
return false;
}
return true;
}
它仅适用于特定文件夹/命名空间。但不确定他是否要在所有应用程序控制器上检查它。