Yii2 dropdownlist onchange重定向到URL

时间:2015-09-09 02:04:36

标签: javascript php jquery yii2 yii2-advanced-app

我希望此代码重定向到/ user / create 我该怎么做?

echo Html::beginForm();

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

echo Html::endForm();`

3 个答案:

答案 0 :(得分:3)

如果您希望表单由users / create处理,则必须在beginForm函数中定义一个操作

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

查看http://www.yiiframework.com/doc-2.0/yii-helpers-basehtml.html#beginForm()-detail了解详情。

答案 1 :(得分: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中找到更多信息。

<强>更新

顺便说一句,您应该重新检查在用户/创建页面中检索ID的方式。只是为了检查get参数的发送方式,我建议您在该操作中设置var_dump ($_GET)。 IE:

在默认的ContacForm中,如果我将方法更改为“get”,当我打印var_dump ($_GET)并提交时,它将显示:

array (size=3)
    'r' => string 'site/contact' (length=12)
    'ContactForm' => 
        array (size=5)
        'name' => string 'c' (length=1)
        'email' => string 'teste@teste.com.br' (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中正确调用id。可能会是这样的:

$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'];
}

如果我对某些内容不清楚,请告诉我,我会为您更新答案。

答案 2 :(得分:0)

... 'onchange'=&gt; 'window.location =“/ user / ..”'; ...