2013-01-19 45 views
0

我創建了上傳文件的表單,還有模型來驗證類型。 如果我上傳的PHP文件或任何文件將在成功的方式上傳, 但在模型中我添加的文件類型 只是「JPG,GIF,PNG,PDF,RAR,ZIP,DOC,DOCX」文件類型valdiation不起作用

如何修復?

視圖:

....... 
<div class="form"> 
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'Cfiles-form', 
    /* 
     'enableAjaxValidation'=>true, 
     'enableClientValidation'=>true, 
     'clientOptions'=>array('validateOnSubmit'=>true), //This is very important 
     */ 
     'clientOptions'=>array('validateOnSubmit'=>true), //This is very important 
     'htmlOptions' => array('enctype' => 'multipart/form-data'), 
)); ?> 

<?php 
/// difine Section model 
$models=new Courses; 
?> 
<?php echo $form->errorSummary($model,'يرجى تعديل الأخطاء التالية'); ?> 
<table> 
<h3> إضافة ملفات الدورات</h3> 
<tr> 
    <td> 
     <div class="row"> 
     <?php echo $form->labelEx($model,'title'); ?> 
     <?php echo $form->textField($model,'title',array('size'=>60,'maxlength'=>255)); ?> 
     <?php echo $form->error($model,'title'); ?> 
    </div> 

    </td> 
</tr> 
<tr> 
    <td> 
      <div class="row"> 
     <?php echo $form->labelEx($model,'desc'); ?> 
     <?php echo $form->textField($model,'desc',array('size'=>60,'maxlength'=>600)); ?> 
     <?php echo $form->error($model,'desc'); ?> 
    </div> 
    </td> 
</tr> 
<tr> 
    <td> 
    <div class="row"> 
     <?php echo $form->labelEx($model,'file'); ?> 
     <?php echo $form->fileField($model,'file'); ?> 
     الملفات المسموحة : jpg,gif, png,pdf,rar,zip,doc,docx 
     <?php echo $form->error($model,'file'); ?> 
    </div> 
    </td> 
</tr> 
....... 

型號:

.... 
public function rules(){ 
     // NOTE: you should only define rules for those attributes that 
     // will receive user inputs. 
     return array(
      array('title, desc, privacy', 'required','message'=>'يرجى ملئ حقل {attribute} '), 
      array('privacy', 'numerical', 'integerOnly'=>true), 
      array('title', 'length', 'max'=>255), 
      array('desc', 'length', 'max'=>600), 

      array('file', 'file', 'types'=>'jpg,gif, png,pdf,rar,zip,doc,docx','allowEmpty'=>true, 'on'=>'update'), 
      // The following rule is used by search(). 
      // Please remove those attributes that should not be searched. 
      array('f_id, title, desc, file, privacy', 'safe', 'on'=>'search'), 
     ); 
    } 
..... 

控制器:

public function actionCreate() 
    { 
     $model=new Cfiles; 

     $models= new Courses; 

     // Uncomment the following line if AJAX validation is needed 
    $this->performAjaxValidation($model); 

     if(isset($_POST['Cfiles'])){ 
      $model->attributes=$_POST['Cfiles']; 
      $valdiate=$model->validate(); 

     /////// upload image functions 
     $rnd = rand(0,999984375); // generate random number between 0-9999 
     $model->attributes=$_POST['Cfiles']['file']; 
     $uploadedFile=CUploadedFile::getInstance($model,'file'); 
     if(!empty($uploadedFile)){ 
      $ext=$uploadedFile->getExtensionName(); 
      $fileName = "samilox$rnd.{$ext}"; // random number + file name 
      } 

      ////////// end 

      if($model->save()){ 
        if(!empty($uploadedFile)) // check if uploaded file is set or not 
       { 
       $uploadedFile->saveAs(Yii::app()->basePath.'/../cfillaf/'.$fileName); // upload image to server 
        $model->file = $fileName; 

        $model->save(false); 
       } 

       echo " Work "; 
       $this->redirect(array('cfiles/admin')); 
     } 
       else{ 

      echo " error"; 

       $this->redirect(array('cfiles/admin')); 
       } 
     } 

     $this->layout='adminsidebar'; 
     if(Yii::app()->request->getIsAjaxRequest()) 
      echo $this->renderPartial('_form',array('model'=>$model),true,true);//This will bring out the view along with its script. 

       else $this->render('create',array(
         'model'=>$model, 
       )); 

     } 

預先感謝

+1

您已經添加了更新方案的規則,但你表現出了對創建方法的代碼,這可能是問題 –

+0

是的,這是真的 –

回答

0

由於Bool.dev

是的,我忘了在插入場景添加驗證

代碼:

array('file', 'file', 'types'=>'jpg,gif, png,pdf,rar,zip,doc,docx','allowEmpty'=>false, 'on'=>'insert'), 
+0

沒問題,你可以接受你自己的答案。 –

1

「啓用」模型文件規則=>「更新」去除功能擺脫烏爾問題。

array''file','file','types'=>'jpg,gif,png,pdf,rar,zip,doc,docx','allowEmpty'=> true,'on'=> 「更新」),

+0

感謝user1725127,我解決了它,閱讀我的答案 –