Как создать это правило urlManager?

Прежде всего, простите мой низкий английский.

Имея следующее действие в контроллере с именем webController:

public function actionPage($view = 'index')
{
  try {
    return $this->render('site/page/' . $view);
  } catch (InvalidParamException $e) {
    throw new HttpException(404);
  }
}

Мне нужно правило, чтобы сделать следующее:

localhost/cookies

equals

localhost/?r=web/page&view=cookiesyprivacidad

or

localhost/faq

equals

localhost/?r=web/page&view=preguntas

Что-то вроде этого:

'rules'=>array(
   'cookies'=>'web/page'
)

Но добавление фиксированного параметра.


person Marcos Navarro    schedule 30.07.2015    source источник


Ответы (2)


Ты нуждаешься в этом

'urlManager' => array(
  'rules' => array(
    <view:(cookies|faq)>' => 'web/page'
  )
)
person SiZE    schedule 30.07.2015

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

'rules'=>array(
   'cookies'=>'page/cookiesyprivacidad',
   'faq'=>'page/preguntas',
)


public function actionCookiesyprivacidad()
{
  try {
    return $this->render('site/page/cookiesyprivacidad');
  } catch (InvalidParamException $e) {
  throw new HttpException(404);
 }
}

 public function actionPreguntas()
{
  try {
    return $this->render('site/page/preguntas');
  } catch (InvalidParamException $e) {
  throw new HttpException(404);
 }
}
person elixir    schedule 30.07.2015
comment
Но с этим решением приведенные выше примеры всегда будут иметь представление значений для индексации. Я думаю, что невозможно сделать то, что я пытаюсь, только с помощью правил. Спасибо - person Marcos Navarro; 30.07.2015
comment
не совсем. когда у вас есть такие URL-адреса, как localhost/?r=web/page&view=cookiesyprivacidad, php заполнит переменную $_GET представлением = cookieyprivacidad. попробуйте и дайте нам знать, если это сработало или нет. - person elixir; 30.07.2015
comment
URL-адрес, который должен быть в браузере: localhost/cookies и внутренне преобразован в: localhost/?r=web/page&view=cookiesyprivacidad - person Marcos Navarro; 30.07.2015
comment
я внес некоторые изменения в ответ выше. он достигает того, что вы хотите, но не совсем так, как вы хотели. - person elixir; 30.07.2015