1

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

例子:

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

控制器名称 => 客户端操作名称 => 编辑

4

3 回答 3

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');
}
于 2013-02-28T07:47:48.077 回答
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;
}
于 2013-03-05T11:26:58.183 回答
0

虽然晚了,但是为了帮助新访客,在这里解决了,

ZF2:在控制器中获取 url 参数

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

$controller = $this->params()->fromRoute('RouteParamForController');
于 2013-11-07T10:06:59.663 回答