【问题标题】:ZF2 - Generating Url from routeZF2 - 从路由生成 URL
【发布时间】:2013-03-23 20:56:26
【问题描述】:

我无法在 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 类的对象无法转换为字符串

【问题讨论】:

    标签: php url action zend-framework2


    【解决方案1】:

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

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

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

    有关 ZF2 的 URL 视图帮助程序的更多信息,请参阅 this

    编辑以回应问题编辑:

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

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

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

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

    希望这会有所帮助:)

    斯托扬

    【讨论】:

    • 感谢 Stoyan 的快速回答,但是,由于我没有得到字符串,我无法回显它:可捕获的致命错误:Zend\Mvc\Controller\Plugin\Url 类的对象无法转换为字符串可能我的路线有误,我将编辑我的帖子以添加我的代码
    • @Reign.85 我根据您的编辑编辑了我的答案。希望这能让您了解如何创建 url :)
    • 非常感谢,这对我有用,我只需要将服务器 url 添加到路径中
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多