2015-05-12 08:31:47 25617次浏览 6条回答 1 悬赏 1 金钱
<form action="index.php?r=model" method="post">
    Name:<input name="name"><br>
    ID:<input name="id"><br>
    Sex:<input name="sex"><br>
    Age:<input name="age"><br>
    <input type="submit" value="submit">
</form>

表单视图是这样的

public function actionIndex(){
    $student = new Student();

    if($student->load(Yii::$app->request->post())){
        return $this->render('student_info',['student'=>$student]);
    }else{
        return $this->render('student');
    }
}

控制器里面是这样的。为什么load返回的是false,属性名和表单名是相同的

最佳答案

  • FatrBaby 发布于 2015-05-12 08:58 举报

    load方法会读取键为类名的数组,并绑定到AR对象,所以你的表单name应该这样写:

    Name:<input name="Student[name]"><br>
    ID:<input name="Student[id]"><br>
    Sex:<input name="Student[sex]"><br>
    Age:<input name="Student[age]"><br>
    <input type="submit" value="submit">
    

    你也可以使用yii自带的wiget,或者yii\helpers\Html下的active系列方法生成表单。

    3 条回复
    回复于 2015-05-12 09:04 回复

    恩,按照你说的load返回的是true了,但是$student里面的属性查看全部是NULL,这是为什么呢,我表单里面填写了数据的

    回复于 2015-05-12 09:49 回复

    你怎么显示的?

    回复于 2015-05-12 10:24 回复

    哎,还是太小白了,知道问题了。你最快回复的,就采纳你的答案吧。万分感谢

  • 回答于 2015-05-12 08:59 举报

    表单文本框name不对, 应该是Student[name] Student[sex] 这样才可以

  • 回答于 2015-05-12 10:14 举报

    用yii提供的方法建立表单

    <?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'title')->textInput(['maxlength' => 255]) ?>
    
  • 回答于 2015-05-12 11:27 举报

    他们都说了你表单错了,确实也错了。但你还可以修改load的参数来实现

    if($student->load(Yii::$app->request->post(), '')){
    
  • 回答于 2016-11-13 16:49 举报

    Yii::$app->request->post 他这个方法,会自动都model的rule验证嘛?

    2 条回复
    回复于 2017-06-21 15:35 回复

    验证方式是validate(),post()方法相当于原生态的$POST["xx"];

    回复于 2017-06-21 15:57 回复
  • 回答于 2018-03-27 11:30 举报

    自定义表单,第二个参数为空,要加上
    $student->load(Yii::$app->request->post(), '')

您需要登录后才可以回答。登录 | 立即注册
wenyudengdeng
经理

wenyudengdeng

注册时间:2015-04-26
最后登录:2015-07-15
在线时长:7小时53分
  • 粉丝4
  • 金钱735
  • 威望30
  • 积分1105

热门问题