Вопрос CakePHP: в чем разница между этими двумя маршрутами? - PullRequest
0 голосов
/ 20 сентября 2011

Это один =>

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' => массив (..), почему не так =>

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

1 Ответ

1 голос
/ 20 сентября 2011

Причина в том, что массив url является аргументом в функции link () - функции HTML-помощника. Если вы посмотрите на объявление:

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

Таким образом, вы передаете url в качестве второго аргумента без имени $url, как если бы вы использовали другие методы.

Howerver, объявление метода create () в помощнике по формам:

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

Обратите внимание, что существует только один массив $ options. Таким образом, ваш URL здесь является членом массива, а не членом списка аргументов. В ассоциативных массивах вы не можете просто оставить ключи, поэтому использование массива url без явного присвоения имени ключу не должно работать.

Для получения дополнительной информации см. Документы по этим методам:
HTML-> ссылка ()
форма-> создать ()

...