Как установить URL из действия контроллера в cakephp? - PullRequest
1 голос
/ 28 октября 2011

Я создавал сайт социальной сети, в котором каждая страница профиля должна отображаться с использованием SEO-дружественного URL.

Теперь это похоже на www.siteprof.com/profile/23
Мне нужно добавитьaditioanl строка 'jake-web-developer' в конце этого URL.результат будет выглядеть как www.siteprof.com / profile / 23 / jake-web-developer .Я знаю, что это можно сделать, когда мы создаем ссылки профиля.Но если кто-то получит доступ к этому профилю, используя эту ссылку www.siteprof.com/profile/23, могу ли я добавить этот предыдущий текст к URL-адресу?

Также есть ли какой-нибудь способ добавить такую ​​строку в URL-адрес издействия контроллера?

Ответы [ 2 ]

0 голосов
/ 28 октября 2011

Мое решение будет заключаться в размещении настраиваемого заголовка перенаправления на странице, если URL-адрес не содержит дружественного для SEO заголовка, который перенаправляет на полный URL-адрес

Один из методов:

public function view($id = null, $slug = null) {

  $data = $this->Profile->findById($id);

  if ($slug == null) {

    $this->redirect(array('action'=>$view, $id, $data['Profile']['slug']));

  }

  // .. rest of view logic

}

Надеюсь, это поможет: -)

0 голосов
/ 28 октября 2011

Это не выглядит правильно, по соглашению CakePHP, оно должно выглядеть так:

**www.siteprof.com/profiles/view/23**

После этого вы устанавливаете profile_controller для действия view($id=0,$name="") Я не знаю, почему это важно, но вы можете генерировать ссылки с параметром name, и он все равно будет работать:

www.siteprof.com/profiles/view/23/jake-web-developer

Если важно добавить последнюю строку, то вам следует выполнить перенаправление в контроллере представления. Проверьте, задано ли имя $, а если нет, перенаправьте на URL-адрес с именем, хотя я бы посоветовал против этого, так как это снижение производительности.

...