Php 文件类型无效

Php 文件类型无效,php,yii,Php,Yii,我创建了表单来上传文件,还创建了模型来验证类型。 如果我上传php文件或任何文件都会成功上传, 但在模型中,我添加了文件类型 只需“jpg、gif、png、pdf、rar、zip、doc、docx” 如何修复它 视图: ....... <div class="form"> <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'Cfiles-form', /* 'enabl

我创建了表单来上传文件,还创建了模型来验证类型。 如果我上传php文件或任何文件都会成功上传, 但在模型中,我添加了文件类型 只需“jpg、gif、png、pdf、rar、zip、doc、docx”

如何修复它

视图:

.......
<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 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,
                ));

        }
提前感谢

谢谢Bool.dev

是的,我忘了添加插入验证场景

代码:

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

删除模型文件规则函数中的“on”=>“update”,以解决您的问题


数组('file','file','types'=>'jpg,gif,png,pdf,rar,zip,doc,docx','allowEmpty'=>true,'on'=>'update'),

您已经为更新场景添加了规则,但是您正在显示create方法的代码,这可能是问题所在
array('file', 'file', 'types'=>'jpg,gif, png,pdf,rar,zip,doc,docx','allowEmpty'=>false, 'on'=>'insert'),