Выпадающий список Yii2 при изменении перенаправления на URL

Я хочу, чтобы этот код перенаправлял на /user/create Как мне это сделать?

echo Html::beginForm();

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

echo Html::endForm();`

person Bumbuli    schedule 09.09.2015    source источник
comment
Помимо указания правильной страницы (как сказал @jorgen), я не понимаю, почему ваш код не будет работать. Разве вы не получаете идентификатор в своем действии User/create? Как вы называете идентификатор (в этом действии)? Вы можете показать нам?   -  person Clyff    schedule 09.09.2015
comment
$COMPANY_ID = $_GET['COMPANY_ID'];   -  person Bumbuli    schedule 09.09.2015


Ответы (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();

Дополнительную информацию можно найти в документе здесь .

ОБНОВЛЕНИЕ

Кстати, вам следует перепроверить способ получения идентификатора на странице пользователя/создания. Просто чтобы проверить, как отправляется параметр 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. Итак, имейте это в виду в users/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'];
}

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

person Clyff    schedule 09.09.2015
comment
Если я использую эту строку: echo Html::beginForm('метод' => 'получить', 'действие' => 'пользователь/создать'); Я получаю сообщение об ошибке: Неопределенное смещение: 0 - person Bumbuli; 09.09.2015
comment
Да, я забыл [], моя беда. Обновил ответ. - person Clyff; 09.09.2015
comment
Другое дело: я не знаю, что будет лучше в вашем проекте, но, чтобы вы знали, вы также используете метод post с этим. - person Clyff; 09.09.2015

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

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

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

person Jørgen    schedule 09.09.2015
comment
Привет Йорген. Большое спасибо. Это работает. Но идентификатор не был отправлен, как я могу передать идентификатор? - person Bumbuli; 09.09.2015

... 'onchange' => 'window.location = "/user/.."'; ...

person webdeb    schedule 09.09.2015
comment
Спасибо! Это работает. Теперь проблема в том, как мне передать COMPANY_ID? - person Bumbuli; 09.09.2015
comment
может быть, как запрос /user/create?id= - person webdeb; 09.09.2015