Php 文件类型无效
我创建了表单来上传文件,还创建了模型来验证类型。 如果我上传php文件或任何文件都会成功上传, 但在模型中,我添加了文件类型 只需“jpg、gif、png、pdf、rar、zip、doc、docx” 如何修复它 视图: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
.......
<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'),