2014-10-20 4 views
1

Я пытаюсь сделать то же самое, что и этот сайт, stackoverflow, делать с их URL-адресами.Псевдоним контроллера маршрутизации Cakephp

CakePHP работает следующим образом: сайт/контроллер/действие/

Я хочу конфиг маршрутизации для достижения этого:

myWebSite.com/questions/(question_id)/ (вопрос)/

например: myWebSite.com/questions/12874722/ CakePHP-маршрутизации-контроллер псевдоним/

Я не понял, как сделать эту смелую часть URL.

+0

Что это нужно делать с «_controller aliases_ «? Полужирная часть - это заголовок вопроса. И что конкретно представляет собой проблема? Вы читали [** docs **] (http://book.cakephp.org/2.0/en/development/routing.html#passing-parameters-to -action)? ps, всегда указывайте точную версию CakePHP и соответствующим образом помечайте свой вопрос. – ndm

+2

Обратите внимание, что SO фактически игнорирует заголовок вопроса, и вы можете поставить [все, что вам нравится] (http://stackoverflow.com/questions/26466567/this-is-a-silly-url) там, но он перенаправит, если вы (это важный идентификатор вопроса) – DavidG

+0

Фактическая проблема заключается в том, что я не знаю, как ее поместить, заголовок вопроса в URL-адресе. – user1148875

ответ

1

В вашем Config/routes.php

Router::connect('/questions/*', array('controller' => 'questions', 'action' => 'view')); 

В контроллере/QuestionsController.php

вид действия прибудет вопрос, как идентификатор

public function view() { 
    $question_id = isset($this->request->params['pass'][0]) ? $this->request->params['pass'][0] : ""; 
    $question = isset($this->request->params['pass'][1]) ? $this->request->params['pass'][1] : ""; 

    if(empty($question_id)) { 
     throw new NotFoundException('Could not find that question'); 
    } 

    // if $question is empty then get slug from database and redirect to /question_id/question 


    // Get question details and set 
}