0

ここで私は CActiveForm で fileField を使用していますが、モデルでは検証ルールがそのフィールドに対して機能していません ここに私のコードがあります

型式コード

public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.
    return array(
        array('image', 'required'),
        //array('imageId, userId, courseId, departmentId, createdOn, lastModifiedOn, lastModifiedBy', 'required'),
        array('image', 'file', 'types' => 'jpg, txt, pdf, gif, png', 'allowEmpty'=>'false'),
        array('courseId, departmentId', 'numerical', 'integerOnly'=>true),
        array('lastModifiedBy', 'length', 'max'=>45),
        array('createdOn, lastModifiedOn', 'safe'),
        // The following rule is used by search().
        // Please remove those attributes that should not be searched.
        array('id, image, imageId, userId, courseId, departmentId, createdOn, lastModifiedOn, lastModifiedBy', 'safe', 'on'=>'search'),
    );
}

コードを見る

<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'uploadinfo-form',
'enableAjaxValidation'=>false,
'enableClientValidation' => false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
)); ?>

<p class="note">Fields with <span class="required">*</span> are required.</p>

<?php //echo $form->errorSummary($model); ?>



<div class="row">
    <?php echo $form->labelEx($model,'image'); ?>
    <?php echo $form->fileField($model,'image'); ?>
    <?php echo $form->error($model,'image'); ?>
</div>

コントローラーコード

 public function actionCreate()
{

    $model=new Uploadinfo;
    if(isset($_POST['Uploadinfo']))
    {
        $model->attributes=$_POST['Uploadinfo'];
        print_r($_POST['Uploadinfo']);
        $file=CUploadedFile::getInstance($model,'image');
        print_r($file->getName());
        die();
        if($model->save())
        {
            $model->image->saveAs('path/to/localFile');
            // redirect to success page
        }
    }
    $this->render('create', array('model'=>$model));

}

ここでは、必要なファイル検証ルールが機能していません

4

2 に答える 2

0

コントローラコードにこれを試してください:

 public function actionCreate()
 {      
     $model=new Uploadinfo;
     if(isset($_POST['Uploadinfo']))
     {
        $model->attributes=$_POST['Uploadinfo'];
        $file=CUploadedFile::getInstance($model,'image');
        if($model->validate() && $model->save())
        {
            $model->image->saveAs('path/to/localFile');
        }
    }
    $this->render('create', array('model'=>$model));

}
于 2013-02-21T07:12:17.560 に答える