Извлечение данных из базы данных в CakePHP Routes - PullRequest
0 голосов
/ 05 декабря 2010

У меня в приложении CakePHP есть URL-адрес, который выглядит как http://www.example.com/category/1. Где категория - это имя действия в контроллере Веб-сайтов. Я удалил имя контроллера, используя файл CakePHP Routes. И 1 - это идентификатор категории «Еда», записи которой необходимо получить из базы данных.

Но мой клиент требует, чтобы я указал URL-адрес example.com/category/Food без числового идентификатора для улучшения SEO.

Мой вопрос заключается в том, может ли CakePHP Routes извлечь имя идентификатора категории из базы данных и показать его в URL? Если да, то, пожалуйста, помогите мне достичь этого, так как я сильно застрял в этом.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 05 декабря 2010

Сначала создайте поле с именем category_url_title в таблицах категорий.Затем добавьте следующую маршрутизацию

//Route dynamic pages
Router::connect(
    '/categories/:category_url_title',
    array('controller'=>'categories', 'action'=>'view'),
    array(
        'category_url_title' => '(?!add|view|delete\b)\b[a-zA-Z0-9_-]+',
        'pass'=>array('category_url_title')
    )
);

И метод просмотра в контроллере категорий будет выглядеть примерно так:

function view($category_url_title=null) {

    $category = $this->Category->find('first', array('conditions'=> array('Category.category_url_title'=>$category_url_title)));
    $this->set(compact('category'));
}

Надеюсь, это поможет вам.

0 голосов
/ 05 декабря 2010

У вас может быть что-то подобное в ваших Маршрутах:

Routes::connect('/category/*', array('controller' => 'categories', 'action' => 'view'));

Затем в вашем category_controller :: view ($ catName) вы проверяете, верно ли это:Есть много способов справиться с этим, это только один, который я запомнил от руки.

...