Zf2 - 使用uri获取控制器名称/操作名称

时间:2013-02-27 22:06:54

标签: zend-framework2

有没有办法使用给定的uri获取控制器名称和操作名称?

示例:

uri: http://test/client/edit/48

控制器名称=>客户 动作名称=>修改

3 个答案:

答案 0 :(得分:11)

您可以将uri与应用程序路由器匹配以获取RouteMatch对象。

$request = new \Zend\Http\Request();
$request->setUri($uri);
$router = $serviceLocator->get('Router');
$routeMatch = $router->match($request);

现在你可以检索你的参数了。

if ($routeMatch) {
    $controller = $routeMatch->getParam('controller');
    $action     = $routeMatch->getParam('action');
}

答案 1 :(得分:1)

在您的控制器中添加以下内容: -

use Zend\Stdlib\RequestInterface as Request;
use Zend\Stdlib\ResponseInterface as Response;

然后在控制器中创建一个调度功能

public function dispatch(Request $request, Response $response = null)
{
    $controller = $this->params('controller');
    $action = $this->params('action');

    echo "Controller: " . $controller . " Action: " . $action;
}

答案 2 :(得分:0)

虽然来晚了,但为了帮助新访问者,在这里解决了问题,

ZF2: Get url parameters in controller

简而言之,这段代码应该有所帮助,

$controller = $this->params()->fromRoute('RouteParamForController');