2015-09-09 5 views
4

Я бы хотел, чтобы этот код перенаправлял/user/create Как мне это сделать?Yii2 dropdownlist onchange Переадресация на URL

echo Html::beginForm(); 

echo Html::activedropDownList(
    $model, //name 
    'COMPANY_ID', //select 
    $companyList, //items 
    ['onchange'=>'this.form.submit()'] //options 
); 

echo Html::endForm();` 
+0

Кроме того, указав правильную страницу (например, @jorgen сказал), я не могу понять, почему ваш код не работает. В вашем действии User/create вы не получаете идентификатор? Как вы называете id (в этом действии)? вы можете показать нам? – Clyff

+0

$ COMPANY_ID = $ _GET ['COMPANY_ID']; – Bumbuli

ответ

3

По умолчанию форма будет иметь action = '' и method = 'post'. Вы должны изменить это:

echo Html::beginForm(['method' => 'get', 'action' => 'user/create']); 

echo Html::activedropDownList(
    $model, //name 
    'COMPANY_ID', //select 
    $companyList, //items 
    ['onchange'=>'this.form.submit()'] //options 
); 

echo Html::endForm(); 

Вы можете найти более подробную информацию в документе here.

UPDATE

Кстати, вы должны перепроверить, как вы запрашиваете идентификатор в вас пользователь/создать страницу. Чтобы проверить, как отправляется параметр get, я бы порекомендовал вам сделать var_dump ($_GET) в этом действии. IE:

В ContacForm по умолчанию, если я изменить метод «получить», когда я печатать var_dump ($_GET) и представить его покажет:

array (size=3) 
    'r' => string 'site/contact' (length=12) 
    'ContactForm' => 
     array (size=5) 
     'name' => string 'c' (length=1) 
     'email' => string '[email protected]' (length=18) 
     'subject' => string 'safd' (length=4) 
     'body' => string 'asfas' (length=5) 
     'verifyCode' => string 'eaxpzwp' (length=7) 
     'contact-button' => string '' (length=0) 

Входы, что мне нужно внутри массива «ContactForm» , И это потому, что моя форма исходит от модели ContactForm.php. Так что имейте это в виду у пользователей/create для правильного вызова идентификатора. Вероятно, будет что-то вроде:

$get = Yii::$app->request->get(); //retrieve all get params in the url, even the route. 
if (isset($get['ContactForm'])) { //Replace by the name of the form's model. 
    $COMPANY_ID = $get['ContactForm']['COMPANY_ID']; 
} 

Дайте мне знать, если я не понял что-то, и я обновлю ответ за вас.

+0

Если я использую эту строку: echo Html :: beginForm ('method' => 'get', 'action' => 'user/create'); Я получаю сообщение об ошибке: Неопределенное смещение: 0 – Bumbuli

+0

Да, я забыл '[]', мой плохой. Обновлен ответ. – Clyff

+0

Другое дело: я не знаю, что будет лучше всего в вашем проекте, но, как вы знаете, вы также используете метод post. – Clyff

0

... 'OnChange' => 'window.location = "/ пользователь/.."'; ...

+0

Спасибо, он работает. Теперь проблема заключается в том, как передать идентификатор COMPANY_ID? – Bumbuli

+0

возможно как запрос /user/create? Id = "" – webdeb

3

Если вы хотите, чтобы форма для обработки пользователей/создания, вы должны определить действие в функции BeginForm

echo Html:beginForm(['users/create'])

Проверить http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#beginForm()-detail для получения дополнительной информации.

+0

Привет, Йорген. Большое вам спасибо. Это работает. Но, идентификатор не был отправлен, как я могу передать идентификатор? – Bumbuli

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