我有一个表单,我想上传一个文件。这是我的代码:
<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 -->
提交后没有任何内容添加到数据库中,我对firebug进行了一些调查,并发现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
获取一个空字符串!所以什么都没有上传到我的数据库。任何人都知道如何解决这个问题?如果你需要更多我
答案 0 :(得分:2)
您需要以下内容:
$model = new Photo;
$model->attributes = $_POST['Photo'];
$model->image = CUploadedFile::getInstance($model,'file');
其中file
是该字段的名称。
我没有测试过这个,它来自文档。