2010-05-19 1 views
1

Для моего сайта у меня есть номер Orders, каждый из которых содержит число Quotes. Котировка всегда привязана к индивидуальному заказу, так что в контроллере котировок добавить цитату со ссылкой на его заказ:Создание значимых URL-адресов для добавления в CakePHP

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

Посмотрите документацию для defining routes.

Что-то вроде этого следует сделать трюк:

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

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

Edit:

Кроме того, посмотрите на документацию для passing parameters to action.

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

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

Вы можете получить доступ к ID с $id в QuotesController::add($id).

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