我如何使用Yii小部件和表单?

时间:2015-05-24 07:29:26

标签: php yii

我们如何使用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中使用表单和小部件?

1 个答案:

答案 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进行操作,以便了解此框架的工作原理。