Получение данных из базы данных в CakePHP Routes
Главная
Вопросы
Получение данных из базы данных в CakePHP Routes
У меня есть URL-адрес в моем приложении CakePHP, который выглядит как http://www.example.com/category/1< /а>. Где категория — это имя действия в контроллере веб-сайтов. Я удалил имя контроллера, используя файл маршрутов CakePHP. А 1 — это id категории Food, записи которой необходимо получить из базы данных.
Но мой клиент требует, чтобы у меня был URL-адрес example.com/category/Food без числового идентификатора для лучшего SEO.
Мой вопрос в том, может ли CakePHP Routes получить название идентификатора категории из базы данных и показать его в URL-адресе? Если да, то любезно помогите мне добиться этого, так как я сильно застрял в этом.
Любая помощь будет оценена.
person
coolguru4ever
schedule
05.12.2010
source
источник
Ответы (2)
Сначала создайте поле с именем 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'));
}
Надеюсь, что это поможет вам.
person
Musa
schedule
05.12.2010
У вас может быть что-то вроде этого в ваших маршрутах:
Routes::connect('/category/*', array('controller' => 'categories', 'action' => 'view'));
Затем в вашем category_controller::view($catName) вы проверяете, верно ли это:
if($this->Category->hasAny(array('name' => $catName))) {
// your code here
} else {
// set message in the view saying category not found
}
Есть много способов справиться с этим, это только один, который я помню с рук.
person
Andreas Wong
schedule
05.12.2010