Як встановити urls з дії контролера в cakephp?

Я створював сайт соціальної мережі, в якому кожна сторінка профілю повинна відображатися за допомогою дружнього 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 з дій контролера?

1

2 Відповіді

Це не виглядає правильним, згідно з конвенцією CakePHP, вона повинна виглядати так:

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

Після цього ви налаштуєте Profile_controller на перегляд дії ($ id = 0, $ name = "") Я не знаю, чому це важливо, але ви можете генерувати посилання з параметром імені, і він буде працювати:

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

Якщо важливо додати останній рядок, то вам слід виконати переадресацію в контролері перегляду. Перевірте, чи вказано ім'я $, і якщо це не так, переадресуйте на URL з ім'ям, хоча я б не радив тому, що це хіт продуктивності.

0
додано
Але те, що ви не можете мати: www.siteprof.com/profile/23/jake-web-developer. (відсутнє "дія" у url, якщо дія не називається "23")
додано Автор Nick Zinger, джерело
Ах, тоді це нормально.
додано Автор Nick Zinger, джерело
Це не "реальний час", якщо це те, що ви думаєте. Stackoverflow також оновить сторінку, ви просто не бачите її (я бачу її в Opera). Для швидшого перенаправлення необхідно переконатися, що перенаправлення розміщується на початку дії контролера.
додано Автор Nick Zinger, джерело
Ви, безумовно, можете мати www.siteprof.com/profiles/view/23/jake-web-developer і метод підпису перегляду ($ id). Торт буде ігнорувати частину "jake-web-developer"
додано Автор RichardAtHome, джерело
у моїй route.php, я перенаправляю цей профіль/view/23
додано Автор benji, джерело
це переадресація займає багато часу, перевірте URL-адресу стека над потоком stackoverflow.com/questions/7926007/… . якщо ви зміните ідентифікатор 7926007 на щось інше, він автоматично змінить відповідний текст.
додано Автор benji, джерело

Моє рішення полягає в тому, щоб розмістити на сторінці спеціальний заголовок переадресації, якщо URL-адреса не містить дружнього заголовка, який перенаправляє на повну 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
додано