【问题标题】:Generating an html link in CakePHP 2.2.1+?在 CakePHP 2.2.1+ 中生成 html 链接?
【发布时间】:2012-07-22 13:58:26
【问题描述】:

如何使用 CakePHP 2.2.1 中的 HtmlHelper 类轻松生成 HTML 链接?

假设我声明了一个路由,将/finest-perfumes-ever-2012 路由到Perfumes/Index 控制器/操作。

我需要这个生成的链接是:

somedomain.com/finest-perfumes-ever-2012  //Generate link HAS to obey Routes I've set.

代替:

somedomain.com/Perfumes/Index

documentation 似乎没有很好地解释如何实现这一目标。

【问题讨论】:

    标签: html cakephp hyperlink html-helper cakephp-2.2


    【解决方案1】:

    不确定您是否意外错过了2012,或者您的问题比我在下面的回答更复杂。假设2012 无关紧要:

    Cake 使用了一个相当不错的功能 - reverse routing

    如果你已经正确设置了一切,下面应该会输出你想要的。

    <?php
    Router::connect(
        '/finest-perfumes-ever',
        array('controller' => 'perfumes', 'action' => 'index')
    );
    
    echo $this->Html->link('View Finest Perfumes!', array('controller'=>'perfumes', 
                                                             'action' => 'index')); 
    

    提供您的 URL(当使用 HTML 帮助程序创建时)具有与路由完全匹配的参数,反向路由将查找您想要的路由,并相应地输出链接。

    如果2012 很重要,您可能可以通过传递参数来实现它 - 有一些examples here

    【讨论】:

    • 我忘了添加 2012,我在其中进行了编辑。您是说我需要在需要调用此 URL 的每个视图中使用此 Router::connect 吗?
    • Router::... 进入您的app/Config/routes.php。然后,每当您使用上述创建链接时,它将自动输出为finest-perfumes-ever;如果这有意义吗?
    • 确实如此,但您的回答并没有说明我应该将Router::connect 代码放在哪里。它是进入某个路由配置文件,还是进入视图本身?
    • 它在 app/config/routes.php 中。此答案是解决您的问题的正确方法。
    【解决方案2】:

    在所有路由语句的最后,在您的 app/Config/routes.php 中定义路由配置。

    您可以通过passing an argument to the action 执行相同的操作,并在您的 routes.php 文件中定义它。

    请询问它是否不适合您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-16
      • 2012-01-25
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      相关资源
      最近更新 更多