2

提交表单时出现此错误:

Bad Request (#400) Unable to verify your data submission.

我已经进入<?= Html::csrfMetaTags() ?>布局。我认为,我有这个问题,因为我使用 datepicker。使用 ActiveForm 创建表单。

我必须做什么?这是表单的代码:

<?
        $form2 = ActiveForm::begin(['id' => 'user-univer']);
        echo $form2->field($model2, 'university')->label('Input university name:');
        echo $form2->field($model2, 'degree')->label('Input your education specialization:');
        //echo $form2->field($model2, 'date')->label('Input your education date:');
        echo '<label class="control-label">Education time:</label><br/>';
        echo '<span>Start date of your education:</span>';
        echo DatePicker::widget([
            'name'  => 'date_from',
            'value'  => $value,
            'dateFormat' => 'dd.MM.yyyy',
        ]);
        echo '<span>End date of your education:</span>';
        echo DatePicker::widget([
            'name'  => 'date_to',
            'value'  => $value,
            'dateFormat' => 'dd.MM.yyyy',    
        ]);
        echo '<br/><br/>';


        echo $form2->field($model2, 'info')->textarea()->label('Any other information about your university degree:');
        echo Html::submitButton('Add university', ['class' => 'btn btn-primary btn-univer']);
        ActiveForm::end(['id' => 'user-univer']);

        } ?>

UPD:没有 datepicker 我也有同样的问题,为什么?如何解决?

4

3 回答 3

1

在表单中添加 csrf 令牌字段

<input type="hidden" name="<?=Yii::$app->request->csrfParam?>" value="<?=Yii::$app->request->getCsrfToken()?>" />

会解决你的问题。

于 2015-11-17T12:50:37.780 回答
0

我发现/输入末尾缺少 a,例如:

<input type="hidden" name="_csrf" value="bWs1ZlJSeGYiHG0xNThVNgBYBzY8FAI5PS4CVn8lJzMeIkAgKgU0Ig==">

工作输入是:

<input type="hidden" name="_csrf" value="bWs1ZlJSeGYiHG0xNThVNgBYBzY8FAI5PS4CVn8lJzMeIkAgKgU0Ig==" /> 

就我而言,我修改了yiisoft/yii2/helpers/BaseHtml

public static function tag($name, $content = '', $options = [])
{
    if ($name === null || $name === false) {
        return $content;
    }
    if ($name=="input") {$html = "<$name" . static::renderTagAttributes($options) . '/>';}
    else {$html = "<$name" . static::renderTagAttributes($options) . '>';      }

    return isset(static::$voidElements[strtolower($name)]) ? $html : "$html$content</$name>";
}
于 2017-05-13T21:50:03.427 回答
0

问题可能是由于 csrf 验证。您是否尝试过禁用 csrf 验证

内部行动试试这个

$this->enableCsrfValidation = false;

检查这个链接

于 2015-11-17T11:41:14.493 回答