这是因为load()
方法在模型名称属性内查找发布数据,而您是自己编写输入的,而不是对表单使用Yii方法。
[当我想从表单获取变量时,不会加载post操作。
这是我的观点:
<?php
$form = ActiveForm::begin();
?>
<div class="form-group">
<input type="text" name="username" placeholder="FullName">
<?= Html::a(Yii::t('app', 'Start'), ['start', 'link' => $model->link], ['type' => 'button','class' => 'btn btn-primary btn-round']) ?>
</div>
<?php ActiveForm::end(); ?>
这是我的控制器:
if ($model->load(Yii::$app->request->post())){
exit(var_dump('everything is ok'));
}else {
exit(var_dump('nothing is right'));
}
结果是'什么都不对。'>
当我想从表单获取变量时,不会加载post操作。这是我的观点:
这是因为load()
方法在模型名称属性内查找发布数据,而您是自己编写输入的,而不是对表单使用Yii方法。
所以您的帖子Yii::$app->request->post()
返回:
array( 'username' => 'value of username', )
并且您的
$model->load
寻找array( 'modelName' => array( 'username' => 'value of username', ) )
要使您的帖子数据看起来也很正确,可以删除输入,并在表单内使用此方法:
<?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?>
或者使用错误的方式,修改您的输入和内部用户名的使用:
<input type="text" name="modelName[username]" placeholder="FullName">
当然,我要在其中输入用户名,您必须输入真实的模型名称。
除了使用锚点链接而不是提交按钮之外,您没有使用模型来创建活动输入,因此字段名称没有模型名称或Yii接受的标准数组格式,您应该将空字符串传递给load方法,如下所示:第二个参数是formName
,如下所示
$model->load(Yii::$app->request->post(),'');
因此,您的完整表格应类似于
<?php
$form = ActiveForm::begin(
[
'action' => 'start',
]
);
?>
<div class="form-group">
<input type="text" name="username" placeholder="FullName">
<?php echo Html::submitButton(Yii::t('app', 'Start'), ['class' => 'btn btn-primary btn-round']) ?>
</div>
<?php ActiveForm::end();?>
并且您的控制器代码应如下所示
if ($model->load(Yii::$app->request->post(),'')){
exit(var_dump('everything is ok'));
}else {
exit(var_dump('nothing is right'));
}
这是因为load()
方法在模型名称属性内查找发布数据,而您是自己编写输入的,而不是对表单使用Yii方法。
除了使用锚点链接而不是提交按钮之外,您没有使用模型来创建活动输入,因此字段名称没有模型名称或Yii接受的标准数组格式,您应该将空字符串传递给load方法,如下所示:第二个参数是formName
,如下所示