Как предполагает Роб Уилкерсон, проблема в том, что ваш URL-маршрут не точно описывает выполняемую операцию.Это еще больше сбивает с толку, когда вы хотите изменить бронирование: /reservations/edit/6
Теперь число в URL-адресе означает что-то другое.
Соглашение об URL, которое я использую для подобных ситуаций (адаптировано к вашему конкретному случаю), равно /events/3/reservations/add
.Для настройки ваших маршрутов требуется немного больше времени, но я обнаружил, что он лучше для ясности в будущем.
Образец routes.php
:
Router::connect(
'/events/:event_id/reservations/:action',
array('controller'=>'reservations','action'=>'index'),
array(
'pass' => array('event_id'), // pass the event_id as a param to the action
'event_id' => '[0-9]+',
'actions'=>'add|index' // only reverse-routes with 'action'=>'add' or
// 'action'=>'index' will match this route
)
)
// Usage: array('controller'=>'reservations','action'=>'add','event_id'=>3)
Router::connect(
'/events/:event_id/reservations/:id/:action',
array('controller'=>'reservations'),
array(
'pass' => array('id'), // pass the reservation id as a param to the action
'id' => '[0-9]+',
'event_id' => '[0-9]+',
'actions'=>'edit|delete' // only reverse-routes with 'action'=>'edit' or
// 'action'=>'delete' will match this route
)
)
// Usage: array('controller'=>'reservations','action'=>'edit','event_id'=>3,'id'=>6)
В вашем FormHelper::create
позвоните, вам нужно будет указать большую часть обратного маршрута, по которому вы хотите следовать, но опять же, первоначальная стоимость принесет дивиденды в будущем.С Cake обычно лучше быть явным, чем надеяться, что его автоматика всегда работает корректно, особенно с ростом сложности вашего приложения.