Yii验证规则不起作用
我在数据库中创建了一个没有表的文件上传验证规则,所以我只是使用CFormModel对其进行了扩展 这是我的密码: 控制器Yii验证规则不起作用,yii,php,Yii,Php,我在数据库中创建了一个没有表的文件上传验证规则,所以我只是使用CFormModel对其进行了扩展 这是我的密码: 控制器 public function actionMaterials($pid) { $projectMaterialFile = new ProjectMaterialFile; $this->render('project_materials',array( 'projectMaterialFile'=>$projectMateria
public function actionMaterials($pid)
{
$projectMaterialFile = new ProjectMaterialFile;
$this->render('project_materials',array(
'projectMaterialFile'=>$projectMaterialFile,
));
}
查看(项目材料)
型号
<div id="exportMaterialContent">
<h4 style="text-align:left;">Export Material Document</h4>
<?php echo CHtml::form($this->createUrl("project/export"),'post',array('enctype'=>'multipart/form-data')); ?>
<?php echo CHtml::activeHiddenField( $projectMaterialFile,'idProject',array('value'=>$projectModel->idProject) ); ?>
<?php echo CHtml::activeFileField($projectMaterialFile, 'document'); ?>
<?php echo CHtml::submitButton("Export"); ?>
<?php echo CHtml::endForm(); ?>
</div>
class ProjectMaterialFile extends CFormModel
{
public $document;
public $idProject;
public function rules()
{
return array(
array('document','file','types'=>'csv'),
array('document', 'required'),
);
}
public function attributeLabels()
{
return array(
'document' => 'Project Material Document',
'idProject' => 'Project ID',
);
}
}
所以我在这里做的是,它总是运行到我的控制器的elseactionExport()
即使我尝试echo$model->validate()代码>,它不打印任何内容,这就是为什么它总是转到else语句的原因
我们将非常感谢您的帮助,当然也会得到回报
谢谢!:) 尝试更改模型中的验证规则,如下所示
public function rules()
{
return array(
array('document','file','types'=>'csv'),
array('document', 'required'),
array('document', 'length', 'max'=>200),
array('idProject', 'length', 'max'=>200),
array('document, idProject', 'safe'),
);
}
现在更改控制器部件,如下所示
$model = new ProjectMaterialFile;
$model->attributes = $_POST['ProjectMaterialFile'];
$model->document = CUploadedFile::getInstance($model,'document');
if( $model->validate() )
{
$model->document->saveAs(Yii::getPathOfAlias('webroot')
."/material_document/".$model->document->name);
echo "Correct";
}
else
{
echo "Invalid!";
}
示例链接:您可以粘贴$model->attributes的打印吗?奇怪,但这是输出:数组([document]=>[idProject]=>)
$model = new ProjectMaterialFile;
$model->attributes = $_POST['ProjectMaterialFile'];
$model->document = CUploadedFile::getInstance($model,'document');
if( $model->validate() )
{
$model->document->saveAs(Yii::getPathOfAlias('webroot')
."/material_document/".$model->document->name);
echo "Correct";
}
else
{
echo "Invalid!";
}