检查是否存在任意控制器/操作
Check if an arbitrary controller/action exist
是否有任何方法可以检查控制器/动作的任意组合?(不是当前版本。)
类似Yii::$app->exist(controller/action);
是否可以检查路线?
我需要的是检查一个参数是否作为传递
<?php echo Yii::$app->request->baseUrl.'/controller/action' ?>
到一个JavaScript通用函数,该函数在通过Ajax执行之前就已经存在。
您可以使用method_exists
进行检查。比如:
method_exists(Yii::$app->controllerNamespace . $controllerName, 'action' . ucfirst($actionName));// $actionName with first lette is uppercase
更多信息-http://php.net/manual/en/function.method-exists.php
编辑:
或者你可以用这种方式:
$controller = Yii::$app->createController('controller');//
if (!$controller !== null && method_exists($controller, 'action')) {
echo 'controller/action is allow :)';
}
或者我发明了使用Yii2 Api:的更好方法
$controller = Yii::$app->createController('controller');//
if (!$controller !== null && $controller->hasMethod('action'))) {
echo 'controller/action is allow :)';
}
最可靠的方法是创建Action实例。
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;
}
受@vitalik_74的启发,在参考源代码并测试后,我在Yii 1.1:中发现了这一点
function isActionExistsInController($actionId, $controllerId, $moduleId = null) {
$route = $moduleId ? $moduleId.'/'.$controllerId.'/'.$actionId : $controllerId.'/'.$actionId;
$controller = Yii::app()->createController($route);
return !!$controller;
}
相关文章:
- 当通过AJAX调用时,控制器操作不会执行
- 如何使用Ajax调用特定的控制器和操作来重定向用户
- 检查是否存在任意控制器/操作
- AngularJS-独立的控制器和DOM操作
- RubyonRails环境控制器操作JavaScript响应
- 控制器操作的路由问题
- EmberJs-将所有来自子组件的操作路由到父组件,再路由到父控制器
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 从填充了 AJAX 的下拉列表中获取控制器的操作方法中的值
- ASP.Net MVC 脚本无法使用控制器的默认操作 URL.使用控制器/操作 URL 也是如此
- 从 javascript 获取 MVC 控制器中的操作参数时出错
- 在 AJAX 调用的 zend 控制器操作中正确设置会话
- 将 DOM 操作与 Angular 控制器分离 - 需要最佳实践
- 有没有办法从 javascript 函数调用控制器操作
- 如何使用 Minitest 触发 JS 控制器操作
- MVC 下拉列表更改事件未正确调用控制器中的操作
- Yii2中的Ajax+控制器操作
- 如何在Javascript事件上触发rails控制器操作
- 操作映射触发控制器中的错误方法
- 错误操作控制器::在轨道中呈现部分单击时返回link_to未知格式