2014-02-10 4 views
0

У меня есть PostController с URL: http://cakephp.local/posts/view/20 Теперь я хотел бы переписать его, например: http://cakephp.local/posts/view/some_text_contents.htmlторт PHP хороший смотреть URL маршрутизации

с: some_text_contents это название поля Post Model (в таблице пост).

Итак, что мне делать? У кого-нибудь есть опыт работы с этим, пожалуйста, помогите мне. Большое спасибо!!!

ответ

0
function view($title) { 
    $this->Post->title = $title; 
    $this->set('post', $this->Post->read()); 
} 

Это вернет вас: cakephp.local/сообщений/просмотр/some_text_contents

с этим переписывания файл .htaccess со следующим образом:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ! \.html$ 
RewriteCond %{REQUEST_URI} ! /$ 
RewriteRule ^(.*)$ $1.html 
+0

Как, если я просто хочу, чтобы переписанный URL-адрес: http: //cakephp.local/posts/some_text_contents.html – CaHuynh

+0

отредактируйте ваш htacess-файл, если вы получите помощь от моего ответа, тогда дайте мне возможность проголосовать и принять ответ. – hizbul25

1

переписывать URL, как это вам нужно передать название в качестве параметра метода просмотра (например, hizbul25), а не идентификатор записи.

Смотрите эту тему: CakePHP: Use post title as the slug for view method

Я рекомендую использовать поле с именем слизняка, например, чтобы сохранить название без пробелов, акцентов и специальных символов, а также использовать его в качестве уникального ключа на базе данных.

+0

Это правильный подход, '$ title' может содержать недопустимые символы, пробелы и т. Д., Которые все приводят к сбою запроса, если точное совпадение не найдено. Использование slug также позволяет легко изменять заголовок, не беспокоясь о ранее проиндексированных ссылках. – Ross

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