Symfony - 检查控制器是否存在

时间:2017-07-28 17:58:34

标签: php symfony

我的情况:我有一个由AJAX请求触发的NavigatorController,并且

  

$这 - >转发( “controllername”)

请求。但是如何根据控制器名称检查控制器是否存在?当然,在实际转发之前发生并在页面控制器不存在时抛出错误。

2 个答案:

答案 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";
    }
}