0
我創建了一個文件上傳的驗證規則,在我的數據庫中沒有表格,所以我只是使用CFormModel對其進行了擴展。Yii驗證規則不起作用
這裏是我的代碼:
控制器
public function actionMaterials($pid)
{
$projectMaterialFile = new ProjectMaterialFile;
$this->render('project_materials',array(
'projectMaterialFile'=>$projectMaterialFile,
));
}
VIEW(工程材料)
<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>
控制器 - 出口(從形式來看後一直提交)
public function actionExport()
{
$model = new ProjectMaterialFile;
$model->attributes = $_POST['ProjectMaterialFile'];
if($model->validate()) {
$model->document = CUploadedFile::getInstance($model,'document');
$model->document->saveAs(Yii::getPathOfAlias('webroot')."/material_document/".$model->document->name);
echo "correct";
} else {
echo "Invalid!";
}
}
型號
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',
);
}
}
因此,我在這裏做的是,它總是跑到我的控制器的其他actionExport()
即使我嘗試echo $model->validate();
,它不顯示任何信息,這就是爲什麼它總是去else語句。
您的幫助將不勝感激,當然,獎勵!
謝謝! :)
可以粘貼的print_r $的模型 - >屬性? – GBD
奇怪,但這是輸出:Array([document] => [idProject] =>) – PinoyStackOverflower