2014-09-03 3 views
1

Я не понимаю следующее. В книге, они говорят:Конфликт между именованием конфедерации?

Несколько контроллеры слова могут быть любой «изменяемая» формой, которая равна имя контроллера так:

/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 :: добавляемая/red_apples/add, но CakePHP html helper создает ссылки вроде/RedApples/add? Какой правильный способ написать мои собственные ссылки?

спасибо.

+0

Непоследовательность, похоже, используется в качестве «контроллера» для имени ключа в массиве, поскольку значение принято буквально как часть URL-адреса. Используйте 'array ('controller' => 'red_apples' ...)'. Значение будет использовано в URL-адресе и будет отображаться на контроллер с именем «RedApples». –

+0

@GeorgeCummins - значение не воспринимается буквально как часть URL-адреса - оно используется для создания URL-адреса и может/будет изменяться в зависимости от маршрутов ... и т. Д. – Dave

+0

Вы правы georgecummins. Моя ошибка заключалась в том, чтобы использовать «controller» => «RedApples» (в качестве учебника), когда я могу использовать «red_apples» для принудительного правильного использования. В любом случае, я полагал, что мне нужно использовать имя контроллера (это «RedApples»!), А не подчеркнутая версия имени. Спасибо. – Shunsho

ответ

1

Я смущен относительно того, в чем проблема.

  1. он говорит, что вы можете использовать любую форму
  2. вы используете форму, отличную от рекомендуемой
  3. он отображает форму вы выбрали

В чем проблема? Тот факт, что он дает вам соглашение (но говорит, что он примет и нестандартные), и вы решили отказаться от использования соглашения, не приравнивается к проблеме IMO.

Возможно, я не понимаю реальный вопрос?

Каков правильный способ написания моих собственных ссылок?

«Правильный» способ это способ скопировать/вставить из книги, где он почти дословно говорит «правильный путь ...»

Однако соглашение, что ваши URL-адреса являются в нижнем регистре и подчеркнуто, поэтому/red_apples/go_pick - это правильная форма - Доступ к действию RedApplesController :: go_pick.

Если по какой-то неизвестной причине, вы должны использовать «RedApples» (? Переменные вы не можете изменить или что-то) в качестве имени контроллера в вашем создании ссылок, вы можете обернуть его в инфлекторе:

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

Мне было не очень понятно, что я знаю, что правильный путь - это подчеркнутая версия, но не понимаю, почему, если я использую «controller» => «RedApples» (это логично для меня, потому что это правильное имя контроллер), это создает связь из конвенции. (/ RedApples вместо automaticaly/red_apples). На самом деле я не понимал, как работает html-помощник ... так что спасибо за ваш ответ. – Shunsho

Смежные вопросы