我们如何使用CMultiFileUpload小部件和表单,当用户点击提交按钮时,所有文件都上传了?
视图:
class Business extends \Eloquent
{
public function portfolio()
{
return $this->hasMany('Portfolio');
}
}
class Portfolio extends \Eloquent {
public function business()
{
return $this->belongsTo('Business');
}
}
模型:
<?php
$form = $this->beginWidget(
'CActiveForm',
array(
'id' => 'upload-form',
'enableAjaxValidation' => false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
)
);
$this->widget('CMultiFileUpload', array(
'name' => 'up_files',
'attribute' => 'files',
'model' => $model,
'accept' => 'jpeg|jpg|gif|png', // useful for verifying files
'duplicate' => 'Duplicate file!', // useful, i think
'denied' => 'Invalid file type', // useful, i think
));
echo CHtml::submitButton('Submit');
$this->endWidget();
?>
控制器:
<?php
class Upload extends CFormModel
{
public $file;
//public $file1;
public function rules()
{
return [
['file', 'file', 'types'=>'jpg'],
];
}
}
我尝试使用此代码但不能正常工作。 我怎样才能在yii中使用表单和小部件?
答案 0 :(得分:0)
好的,你犯了一些错误:
在视图中,删除name
属性/参数,当您不使用Yii模型时使用它,只使用纯HTML。
在控制器上,您现在正在检查数据是否正在发送,并将POST信息添加到模型中,以便您可以使用它。
所以把它改成这样的东西:
if(isset($_POST['Upload'])) { //model POST
$model->attributes=$_POST['Upload'];
print_r($model); //Check the data and do whatever you want
像这样:
public function rules()
{
return [
['file', 'safe'],
['file', 'file', 'types'=>'jpg'],
];
}
我建议您按照Yii basic guide进行操作,以便了解此框架的工作原理。