我不明白以下几点。在书中,他们说:
多个单词控制器可以是任何“变形”形式,它等于控制器名称,所以:
/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这样的链接?编写自己的链接的正确方法是什么?
谢谢。
答案 0 :(得分:1)
我对这个问题感到困惑。
问题是什么?事实上,它给你一个约定(但它说它也会接受非传统的)并且你决定反对使用约定并不等同于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)
//...