我的情况:我有一个由AJAX请求触发的NavigatorController,并且
$这 - >转发( “controllername”)
请求。但是如何根据控制器名称检查控制器是否存在?当然,在实际转发之前发生并在页面控制器不存在时抛出错误。
答案 0 :(得分:6)
你实际上可以使用 controller_resolver Symfony使用的服务,以检查控制器是否存在。
{{1}}
希望它有所帮助!
答案 1 :(得分:2)
您也可以使用Service
:
namespace AppBundle\Service;
class ExampleService
{
/**
* @param string $controller
* @return bool
*/
public function has($controller)
{
list($class, $action) = explode('::', $controller, 2);
return class_exists($class);
}
}
在app/config/services.yml
:
services:
app.controller.check:
class: AppBundle\Service\ExampleService
在Controller
:
public function indexAction(Request $request)
{
$controller = 'AppBundle\Controller\DefaultController';
if($this->get('app.controller.check')->has($controller))
{
echo 'Exists';
}
else
{
echo "Doesn't exists";
}
}