2012-06-13 4 views
2

У меня есть форма, и я хочу загрузить файл. Вот мой код:Yii framework, загрузка файлов не работает

<div class="form"> 

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'show-form', 
    'enableAjaxValidation'=>false, 
     'htmlOptions' => array('enctype' => 'multipart/form-data'), 

)); ?> 

<fieldset> 
    <legend>DATI TECNICI</legend> 

     <div class="row"> 
      <?php echo $form->labelEx($model,'tec_data_file'); ?> 
      <?php echo $form->fileField($model,'tec_data_file',array('size'=>45,'maxlength'=>45)); ?> 
      <?php echo $form->error($model,'tec_data_file'); ?> 
     </div> 
</fieldset> 
<?php $this->endWidget(); ?> 

</div><!-- form --> 

Там ничего не было добавлено в базу данных после представления, я сделал немного отладки с поджигатель и выяснили, что filefield генерирует код, подобный этому:

<input id="ytShow_tec_data_file" type="hidden" name="Show[tec_data_file]" value=""> 
<input id="Show_tec_data_file" type="file" name="Show[tec_data_file]" maxlength="45" size="45"> 

и два данные отправляются $_POST для tec_data_file (это мое поле файла в db). Первый var пуст (я думаю, что это связано с первым скрытым вводом). а второй содержит мой файл. и когда я задаю переменные в моей модели для сохранения:

$modelPhoto->attributes = $_POST['Photo']; 

tec_data_file получает пустую строку! Поэтому ничто не загружается в мой db. У кого-нибудь есть идея, как это решить? Если вам нужно больше я

+1

Все, что вам нужно, здесь http://www.yiiframework.com/wiki/2/how-to-upload-a-file-using-a-model/ – Puigcerber

ответ

2

Вам нужно что-то вроде:

$model = new Photo; 
$model->attributes = $_POST['Photo']; 
$model->image = CUploadedFile::getInstance($model,'file'); 

где file это имя поля.

Я не тестировал это, это из документации.

Смежные вопросы