CakePHP问题:这两个路由有什么区别?

时间:2011-09-20 02:29:00

标签: php cakephp routing cakephp-1.3

这是一个=>

echo $this->Html->link('Edit',
                            array('controller'=>'comments','action'=>'edit',$comment['Comment']['id']));

这是另一个形式=>

echo $this->Form->create('Comment', 
                array('url'=>array('controller' => 'comments', 'action' =>'add', $listposts['Post']['id']) )
                );
    echo $this->Form->input('post_id',array('type'=>'hidden','style'=>'width:30%','value'=>$listposts['Post']['id']));  
    echo $this->Form->input('name',array('style'=>'width:30%'));
    echo $this->Form->input('email',array('style'=>'width:30%'));   
    echo $this->Form->input('body',array('rows'=>'5'));

    echo $this->Form->end('Submit');

是否可以使用echo $ this-> Form->像上一个一样创建?为什么我需要'url'=> array(..)为什么不喜欢这个=>

echo $this->Form->create('Comment',array('controller' => 'comments', 'action' =>'add', $listposts['Post']['id']));

1 个答案:

答案 0 :(得分:1)

原因是url-array是link-in中的一个参数 - HTML-helper的函数。如果您看一下声明:

link(string $title, mixed $url = null, array $options = array(),  
     string $confirmMessage = false)

因此,您将url作为第二个参数传递,而不使用$url名称,就像使用其他方法一样。

Howerver,Form-helper中create() - 方法的声明是:

create(string $model = null, array $options = array())

请注意,只有一个$ options-array。所以你的url是一个数组的成员,而不是参数列表的成员。在关联数组中,你不能简单地保留键,所以使用url-array而不显式命名键应该不起作用。

有关详细信息,请参阅此方法的文档:
HTML->link()
Form->create()