我需要一些有点奇怪问题的帮助。 我的问题是,当使用CMultiFileUpload时,提交按钮不会向控制器提交文件。
我有一个非常简单的视图来上传多个文件:
<?php
$form = $this->beginWidget(
'CActiveForm',
array(
'id' => 'upload-form',
'htmlOptions'=>array('enctype' => 'multipart/form-data'),
));?>
<div class="row">
<?php echo $form->labelEx($model,'sourceCode'); ?>
<?php
$this->widget('CMultiFileUpload', array(
'model'=>$model,
'name' => 'sourceCode',
'attribute'=> 'sourceCode',
'max'=>5,
'accept' =>'zip',
'duplicate' => 'Duplicate file!',
'denied' => 'Invalid file type',));
echo $form->error($model,'sourceCode');?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Submit'); ?>
</div>
<?php $this->endWidget();?>
这是我的模特:
class UploadSolutionForm extends CFormModel
{
public $sourceCode;
public function rules()
{
return array(
array('sourceCode', 'file', 'types'=>'zip', 'allowEmpty'=>false, 'wrongType'=>'Only .zip files allowed'),
);
}
public function attributeLabels()
{
return array(
'sourceCode' => 'Uploaded file',
);
}
}
这可能是有史以来最简单的行动:
public function actionUpload()
{
$model = new UploadSolutionForm();
if(isset($_POST['UploadSolutionForm']))
{
echo 'Got it!';
}
$this->render('solve',array('model'=>$model));
}
但是,当我点击提交时,它不会回显任何内容,但它会使用此代码(CMultiFileUpload替换为fileField):
<?php
$form = $this->beginWidget(
'CActiveForm',
array(
'id' => 'upload-form',
'htmlOptions'=>array('enctype' => 'multipart/form-data'),
));?>
<div class="row">
<?php echo $form->labelEx($model, 'sourceCode');?>
<br><?php echo $form->fileField($model, 'sourceCode');?>
<?php echo $form->error($model, 'sourceCode');?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Submit'); ?>
</div>
<?php
$this->endWidget();?>
有人能告诉我什么是错的吗? 提前谢谢......
答案 0 :(得分:0)
试试这个有效
在您的View文件中,在表单小部件中指定action属性,如下面的代码所示
<?php
$form = $this->beginWidget(
'CActiveForm',
array(
'id' => 'upload-form',
'action'=>Yii::app()->createAbsoluteUrl('yourcontrollername/actionname'),
'htmlOptions'=>array('enctype' => 'multipart/form-data'),
));?>
<div class="row">
<?php $this->widget('CMultiFileUpload',array(
'name'=>'files',
'accept'=>'jpg|png',
'max'=>3,
'remove'=>Yii::t('ui','Remove'),
//'denied'=>'', message that is displayed when a file type is not allowed
//'duplicate'=>'', message that is displayed when a file appears twice
'htmlOptions'=>array('size'=>25),
)); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Submit'); ?>
</div>
<?php $this->endWidget();?>
在yourController actionUplaod中,如下所示
public function actionUpload(){
echo "hi";
var_dump($_FILES['files']);
}