我正在制作一份渐进阶段登记表。
我正在Yii::app()->session['']
中存储$POST['']['']值并在最后一步之后插入数据库。
现在我想我需要为每个注册页面使用场景。
问题:
如何在不存储值的情况下验证每个注册页面
通过$model->save()?
我所做的:
Controller.php
public actionCreate($id){
$model=new Admission;
if($id==0){
$model->setscenario('student');
Yii::app()->session['percent'] = 0;
if(isset($_POST['Admission']))
{
Yii::app()->session['admissionStudent'] = $_POST['Admission'];
if($model->validate('student')){
Yii::app()->session['percent'] = 25;
$this->redirect(array('create','id'=>$id+1));
}
else{
var_dump($model->getErrors());
}
}
}
}
Create_Form.php
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm',array(
'id'=>'admission-form',
//'enableAjaxValidation' => true,
//'htmlOptions' => array('enctype'=>'multipart/form-data'),
)); ?>
<?php echo $form->textFieldRow($model,'Name',array('class'=>'span4')); ?>
/* And other Fields */
<?php $this->widget('bootstrap.widgets.TbButton', array(
'buttonType'=>'submit',
'type'=>'primary',
'label'=>$model->isNewRecord ? 'Next' : 'Save & Proceed',
)); ?>
Model.php
public function rules()
{
return array(
array('Name,dob,SchoolLastAttended,
StandardLastStudied,QualifiedForPromotion,age,sex,medium',
'required','on'=>'student'),
}
错误
它显示每个字段为空,并返回验证错误
var_dump
array(8) { ["Name"]=> array(1) { [0]=> string(41) "Name of the Pupil
cannot be blank." } ["dob"]=> array(1) { [0]=> string(37) "Date of
Birth cannot be blank." } ["SchoolLastAttended"]=> array(1) { [0]=>
string(71) "Name of the School last attended Primary/Middle cannot be
blank." } ["StandardLastStudied"]=> array(1) { [0]=> string(45)
"Standard Last Studied cannot be blank." } ["QualifiedForPromotion"]=>
array(1) { [0]=> string(70) "Whether qualified for promotion to
Standard VI cannot be blank." } ["age"]=> array(1) { [0]=> string(27)
"Age cannot be blank." } ["sex"]=> array(1) { [0]=> string(27) "Sex
cannot be blank." } ["medium"]=> array(1) { [0]=> string(30) "Medium
cannot be blank." } }
我找到了答案,我觉得自己太愚蠢了。以防有人面临类似的问题。
添加
$model->attributes = $_POST['Admission'];
至控制器操作:
public actionCreate($id){
$model=new Admission;
if($id==0){
$model->setScenario('student');
Yii::app()->session['percent'] = 0;
if(isset($_POST['Admission']))
{
$model->attributes = $_POST['Admission'];
if($model->validate('student')){
Yii::app()->session['admissionStudent'] = $_POST['Admission'];
Yii::app()->session['percent'] = 25;
$this->redirect(array('create','id'=>$id+1));
}
}
}
}