2015-01-28 5 views
1

У меня есть это простое действие для создания функциональности.Yii2 Перенаправление на другое действие с параметром и prettyUrl

public function actionCreate() 
{ 
    $model = new Horse(); 
    $model->attributes = \Yii::$app->request->post('Horse'); 

    if ((\Yii::$app->request->post()) && ($model->validate())) { 
     $model->save(false); 
     $this->redirect(
      [ 
       'view', 
       'id' => $model->id 
      ] 
     ); 
    } 

    return $this->render(
     'create', 
     [ 
      'model' => $model, 
     ] 
    ); 
} 

Под общей/конфигурации/main.php, я определил:

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'showScriptName' => false, 
], 

Но, когда $this->redirect называется, она открывает URL без учета выше конфигурации. Итак, это то, что я вижу:

http://traditionalbox.back.dev/horse/view?id=11 

вместо:

http://traditionalbox.back.dev/horse/view/11 

Что случилось?

ответ

1

Вам необходимо настроить Правила в своем менеджере URL.

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

'rules' => array(
       '<controller:\w+>/<id:\d+>' => '<controller>/view', 
       '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
       '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
     ), 

Насколько я понимаю, prettyUrl только об использовании формата пути.

Кредиты предоставлены с ezekielnoob.

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