您好我在尝试使用this方法上传图片时遇到了问题。
我的行动/模特:
class Image extends CActiveRecord
{
public $foto;
...
public function rules()
{
return array(
...
array('foto', 'file', 'types'=>'jpg, gif, png'),
...
);
}
}
我的控制器:
class ImageController extends Controller
{
public function actionCreate()
{
$model=new Image;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Image']))
{
$model->attributes=$_POST['Image'];
$model->image=CUploadedFile::getInstance($model,'foto');
if($model->save())
$model->foto->saveAs('productimages');
$this->redirect(array('view','id'=>$model->id));
}
$this->render('create',array(
'model'=>$model,
));
}
}
我的观点:
<?php $form = $this->beginWidget(
'CActiveForm',
array(
'id' => 'upload-form',
'enableAjaxValidation' => false,
'htmlOptions' => array('enctype' => 'multipart/form-data'),
)
); ?>
<?php echo $form->labelEx($model, 'foto'); ?>
<?php echo $form->fileField($model, 'foto'); ?>
<?php echo $form->error($model, 'foto'); ?>
...
<div class="row buttons">
<?php echo CHtml::submitButton('Submit'); ?>
</div>
<?php $this->endWidget(); ?>
但是当我跑步时,出现了两个问题:
问题#1: endWiget()调用[由Ivan Misic解决]
ImageController在其视图“/var/www/html/onlineshop-nimalogos/protected/views/image/_form.php”中包含不正确嵌套的窗口小部件标记。 CActiveForm小部件没有endWidget()调用。
问题#2: 由于问题#1已解决,出现了另一个问题,图像未保存在我的'productimages'文件夹中。
请帮我解决问题#2。非常感谢..
答案 0 :(得分:2)
您在某处打开了多余的 CActiveForm小部件,您应该查看视图和部分内容。
Yii正在使用gii创建三个视图文件,这些文件是:
create.php update.php | | | | +-------+-------+ | | _form.php
创建和更新视图呈现相同的部分_form,因此您应该查看所有三个以查找冗余的 beginWidget 调用。
您在问题中支持的视图应该是_form.php局部视图。