2013-07-31 29 views
0

我需要一些幫助,有點奇怪的問題。 我的問題是,使用CMultiFileUpload時,提交按鈕不會將文件提交給控制器。Yii-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

有人嗎?正如我看到它與CMultiFileUpload的形式不POST到控制器。任何想法爲什麼? – supernugy

回答

0

試試這個它的工作原理

在視圖文件中表單控件指定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']); 
    } 
+0

謝謝,這是非常有幫助的,我想我可以找出其餘的... – supernugy