有没有办法使用给定的uri获取控制器名称和操作名称?
示例:
uri: http://test/client/edit/48
控制器名称=>客户 动作名称=>修改
答案 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');