9

在zend 2中,我无法弄清楚从我想要的任何地方生成Url

我得到了动作和控制器,所以我试试这个:

$this->url('myControllerName', array('action' => 'myActionName'));

但这会返回一个对象,我只想要这条路线的完整 URL 字符串

有人可以帮我找到正确的方法吗?

编辑:根据 Stoyan 的说法,也许我在路线上犯了一个错误。这是我的 module.config 的一部分

'router' => array (
                'routes' => array (
                        'indexqvm' => array (
                                'type' => 'segment',
                                'options' => array (
                                        'route' => '/Indexqvm[/:action][/:id_event]',
                                    'constraints' => array (
                                            'action' => '[a-zA-Z][a-zA-Z0-9_-]+',
                                            'id_event' => '[0-9]+'
                                    ),
                                    'defaults' => array (
                                            'controller' => 'Qvm\Controller\Indexqvm',
                                            'action' => 'index' 
                                    ) 
                            ) 
                    ),

我的电话:

echo $this->url('indexqvm', array('action' => 'list-index'));

错误:可捕获的致命错误:Zend\Mvc\Controller\Plugin\Url 类的对象无法转换为字符串

4

2 回答 2

25

在调用之前使用 echo $this->url(...)(见下文),这将显示整个 URL。

<?php echo $this->url('route-name', $urlParams, $urlOptions); ?>

请注意,第一个参数url()是文件中指定的路由名称[module]/config/module.config.php

有关 ZF2 的 URL 视图帮助程序的更多信息,请参阅此内容。

编辑以回应问题编辑:

上面的部分与使用 URL 视图助手有关。

如果您想要控制器中的 URL,那么您需要 URL 控制器插件。

<?php $url = $this->url()->fromRoute('route-name', $params, $options); ?>

是此控制器插件的 ZF2 手册的参考。

希望这可以帮助 :)

斯托扬

于 2013-04-02T14:31:34.093 回答
1

您可以在 .phtml 文件中使用它

echo $this->url('HelloWorld/default', array('controller'=>'Index', 'action'=>'registration'));

其中 HelloWorld/default 是路由,其余的是控制器及其操作,您也可以发送其他参数,仅在数组中作为键和值对添加。

于 2015-04-17T11:45:15.727 回答