使用控件中的对象Zend\View\Helper\Url

Mar*_*nts 7 php zend-framework2

抱歉我的英语不好,我来自俄罗斯

开始学习zend框架2 ...控制器中的示例,readAction():

use Zend\View\Helper\Url;

....

$helperUrl = new Url();
$address  = $helperUrl('news', array('action' => 'index'));
Run Code Online (Sandbox Code Playgroud)

结果,抛出异常:

Zend\View\Exception\RuntimeException

File:
    W:\home\zf2\vendor\zendframework\
       zendframework\library\Zend\View\Helper\Url.php:80
Message:
    No RouteStackInterface instance provided
Run Code Online (Sandbox Code Playgroud)

请帮我.我做错了什么?

Dan*_*l M 12

您不能在控制器中使用viewhelper - 而且您不需要.还有一个Url控制器插件,几乎完全相同.

控制器插件是可调用的类,你可以像这样使用它们(控制器的动作上下文):

$url = $this->url()->fromRoute($route, $params, $options, $reuseMatchesParams);
Run Code Online (Sandbox Code Playgroud)

所有参数都是可选的.有关详细信息,请查看代码Zend\Mvc\Controller\Plugin\Url或阅读文档.

  • 不对.你可以在控制器中使用视图助手,但是ofc并不是一个好主意:$ uVH = $ this-> getServiceLocator() - > get('viewhelpermanager') - > get('url'); $ routeUrl = $ uvh('route-name',array('param1'=>'param1')); 等等 (3认同)