Создание значимых URL для добавления в Cakephp - PullRequest
1 голос
/ 19 мая 2010

Для моего сайта у меня есть номер Orders, каждый из которых содержит число Quotes. Предложение всегда привязано к индивидуальному заказу, поэтому в контроллере предложений я добавляю предложение со ссылкой на его заказ:

function add($orderId) {
    // function here
}

И вызывающий URL выглядит немного как

http://www.example.com/quotes/add/1

Мне пришло в голову, что URL стали бы более понятными, если бы они выглядели немного более похожими на

http://www.example.com/orders/1/quotes/add

Поскольку цитата добавляется к заказу 1.

Этого можно достичь в CakePHP?

1 Ответ

1 голос
/ 19 мая 2010

Ознакомьтесь с документацией для определения маршрутов .

Нечто подобное должно сработать:

Router::connect(
    '/orders/:id/quotes/add',
    array('controller' => 'quotes', 'action' => 'add'),
    array('id' => '[0-9]+')
);

Вы сможете получить доступ к идентификатору с помощью $this->params['id'] в QuotesController::add().

Редактировать:

Также ознакомьтесь с документацией для передачи параметров в действие .

Можно передать идентификатор в качестве параметра действия контроллера, например:

Router::connect(
    '/orders/:id/quotes/add',
    array('controller' => 'quotes', 'action' => 'add'),
    array('pass' => array('id'), 'id' => '[0-9]+')
);

Затем вы можете получить доступ к идентификатору с помощью $id в QuotesController::add($id).

...