Пользоваться поиском умею... тема не нова, но за два дня не нашел для себя решения...
Имею вот такой Url: report/metar?CountriesForm%5Bcountry_name%5D=AF
Как его привести к такому виду: report/metar/AF
в настройках:
Код: Выделить всё
'urlManager' => [
'class' => 'codemix\localeurls\UrlManager',
'languages' => ['en-GB', 'uk', 'ru'],
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => false,
'rules' => [
'' => 'site/index',
'report' => 'report/index',
'report/<metar/:\w{2}>' => 'report/metar',//вот тут чего я уже только не "пихал"
],
]
Код: Выделить всё
public function actionMetar()
{
$request = Yii::$app->request;
$get = $request->get();
$model = new CountriesForm();
$countries = Countries::find()->all();
$countries_items = ArrayHelper::map($countries,'iso_alpha2','country_name');
if(isset($get['CountriesForm']['country_name']))
{
return $this->render('metar-country',[
'model' => $model,
'countries_items' => $countries_items,
'iso_alpha2' => $get['CountriesForm']['country_name'],
]);
}else{
return $this->render('metar-default',[
'model' => $model,
'countries_items' => $countries_items,
]);}
}
Код: Выделить всё
<?php
$form = ActiveForm::begin([
'id' => 'countries-form',
'method' => 'get',
'action' => Url::to(['report/metar']),
'layout' => 'horizontal',
'fieldConfig' => [
'horizontalCssClasses' => [
'label' => 'col-sm-4',
'offset' => 'col-sm-offset-4',
'wrapper' => 'col-sm-5',
],
],
]);
echo $form->field($model, 'country_name', [
'inputOptions' => [
'prompt' => Yii::t('app', '- select country -'),
'onchange'=>'this.form.submit()',
],
])->dropDownList($countries_items)->label(false);
ActiveForm::end();
?>
Код: Выделить всё
$form = ActiveForm::begin([
'id' => 'countries-form',
'method' => 'get',
'action' => Url::to(['report/metar']),
'layout' => 'horizontal',
'fieldConfig' => [
'horizontalCssClasses' => [
'label' => 'col-sm-4',
'offset' => 'col-sm-offset-4',
'wrapper' => 'col-sm-5',
],
],
]);
echo $form->field($model, 'country_name', [
'inputOptions' => [
//'prompt' => Yii::t('app', '- select country -'),
'onchange'=>'this.form.submit()',
],
])->dropDownList($countries_items, [
'options' => [
$iso_alpha2 => [
'Selected' => true
]
]
])->label(false);
ActiveForm::end();