制作自定义创建操作

时间:2016-05-02 17:51:37

标签: php yii

在我的应用程序中,我需要创建一个包含少量列的表(CGridView)和一个带按钮的列。当我单击按钮时,它应该对模型“studentKurs”执行创建操作。所以,我将参数传递给表,正如我所看到的,函数被执行。失败的是我的模型验证,即使我通过GET传递参数并在我创建的actionCreateCustom方法中检索它们并用它们填充$ model字段。我错过了什么?

以下是我创建网址的表格中的部分:

array(
    'class'    => 'CButtonColumn',
    'template' => '{add}',
    'buttons'  => array(
        'add' => array(
            'url' => 'Yii::app()->createUrl("studentKurs/createCustom", 
                      array(
                        "student_id"    => $data[\'id\'],
                        "predmet_naziv" => $_GET[\'predmet_naziv\'],
                        "id_stud_prog"  => $data[\'id_stud_prog\'],
                        "id_nivo_stud"  => $data[\'id_nivo_stud\'],
                        "stud_god_god"  => $_GET[\'stud_god_god\']
                      )
                    )',
        ),
    ),
),

来自控制器的功能:

public function actionCreateCustom($student_id, $predmet_naziv, $id_stud_prog, $id_nivo_stud, $stud_god_god)
{
    $model=new StudentKurs;

    $model['predmet_naziv'] = $predmet_naziv;
    $model['id_stud_prog'] = $id_stud_prog;
    $model['id_nivo_stud'] = $id_nivo_stud;
    $model['stud_god_god'] = $stud_god_god;
    $model['student_id'] = $student_id;

    $model['ocjena'] = '';
    $model['polozeno'] = '';

    if($model->validate())
    {
        echo "OK";
        $this->saveModel($model);
    }
    else
    {
        echo "ERROR";
    }
        //$this->refresh();
}

ERROR消息在我的屏幕上回显。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以通过这种方式获得验证错误

if ($model->validate()) {
  // all inputs are valid
 } else {
 // validation failed: $errors is an array containing error messages
   $errors = $model->errors;
   var_dump($errors);
  }

或(琐碎的方式)你可以有选择地评论你的规则,以便调查责任人。