CakePHP问题:什么';这两种路线有什么区别?

CakePHP问题:什么';这两种路线有什么区别?,php,cakephp,routing,cakephp-1.3,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('contr

这是一个=>

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->create?为什么我需要'url'=>array(..)为什么不这样=>

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

原因是url数组是HTML帮助程序的link()函数中的一个参数。如果你看一下声明:

link(string $title, mixed $url = null, array $options = array(),  
     string $confirmMessage = false)
因此,您将url作为第二个参数传递,而不使用
$url
名称,这与其他方法一样

然而,表单helper中create()方法的声明是:

create(string $model = null, array $options = array())
请注意,只有一个$options数组。因此,此处的url是数组的成员,而不是参数列表的成员。在关联数组中,不能简单地保留键,因此在不显式命名键的情况下使用url数组是不可行的

有关更多信息,请参阅此方法的文档:


如何使用$this->Html->link('Edit comment',array(..)将帖子id作为第二个参数传递;通过将其附加到url数组:
echo$this->Html->link('Edit',数组('controller'=>'comments','action'=>'Edit',$comment['comment']['id',$post_id))。当然,这也会更改生成的url:
/comments/edit/comment\u id/post/id