Cakephp命名约定矛盾?

时间:2014-09-03 02:47:45

标签: php cakephp conventions

我不明白以下几点。在书中,他们说:

  

多个单词控制器可以是任何“变形”形式,它等于控制器名称,所以:

/redApples
/RedApples 
/Red_apples 
/red_apples 
     

将全部解析为RedApples控制器的索引。但是,惯例是您的URL是小写和下划线,因此/ red_apples / go_pick是访问RedApplesController :: go_pick操作的正确形式。

但是如果我在add.ctp视图中写这个

echo $this->Html->link('Add Red Apples',
                    array('controller' => 'RedApples', 'action' => 'add'),
                    array('class' => 'button'));

它创建了这个html输出:

www.site.com/RedApples/add

因此,访问RedApplesController :: add的正确方法是/ red_apples / add,但CakePHP html帮助器创建了像/ RedApples / add这样的链接?编写自己的链接的正确方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

我对这个问题感到困惑。

  1. 它表示您可以使用任何形式
  2. 您使用的不是推荐的表格
  3. 显示您选择的表单
  4. 问题是什么?事实上,它给你一个约定(但它说它也会接受非传统的)并且你决定反对使用约定并不等同于IMO的问题。

    也许我误解了真正的问题?

      

    编写自己的链接的正确方法是什么?

    "正确"方式是你从书中复制/粘贴的方式,几乎字面上说的是#34;正确的方法是......"

      

    但是,惯例是您的网址是小写的   强调,因此/ red_apples / go_pick是正确的格式   访问RedApplesController :: go_pick动作。

    如果出于某种未知原因,您必须使用" RedApples" (您可以更改的变量或其他内容?)作为链接创建中的控制器名称,您可以将其包装在变形器中:

    $myController = 'RedApples'; //unable to change to 'red_apples' for some reason
    //...
    'controller'=>Inflector::tableize($myController)
    //...