使用xupload时,_form中有两个模型,错误未定义变量

时间:2012-11-19 06:36:26

标签: php yii models yii-xupload

 Controller : 
 Yii::import("xupload.models.XUploadForm"); //enciora
            $photos = new XUploadForm;
 $this->render('create', array(                    
                'model' => $model,
                'photos' => $photos
            ));

 create: <?php echo 
 $this->renderPartial('_form', 
    array(
        'model'=>$model,
        'photos' => $photos
        )); ?>

_form:  <?php
        $this->widget( 'xupload.XUpload', array(
            'url' => Yii::app()->createUrl( "/encionmentDetail/upload"),
            //our XUploadForm
            'model' => $photos,
            //We set this for the widget to be able to target our own form
            'htmlOptions' => array('id'=>'encionment-detail-form'),
            'attribute' => 'file',
            'multiple' => true,
            //Note that we are using a custom view for our widget
            //Thats becase the default widget includes the 'form' 
            //which we don't want here
            'formView' => 'application.views.encionmentDetail._form',
            )    
        );
        ?>

错误:未定义的变量:模型或未定义的变量:照片。这是出现的错误 在创造时。如果一个模型通过,那么它显示正确。请帮忙

嗯,问题在于这行'formView'=&gt; 'application.views.encionmentDetail._form'

。如果我删除此行,则没有错误。我该怎么办?

4 个答案:

答案 0 :(得分:0)

这很可能是因为你的_form和

的内在形式
'formView' => 'application.views.encionmentDetail._form', 

是一样的。在表单视图中使用不同的一个。它有点递归。

答案 1 :(得分:0)

控制器文件中的

: -

<?php 
     Yii::import("xupload.models.XUploadForm"); 

     $photos = new XUploadForm;
     $this->render('create', array(                    

            'photos' => $photos,
     ));
?>

创建一个在渲染文件中传递bot模型的文件: -

<?php echo $this->renderPartial('_form', array('model'=>$model,'photo'=>$photo))

重要提示:必须与id和extensition html选项ID相同

答案 2 :(得分:0)

snow_walker绝对正确,但我想提供细节。好吧,也许它会帮助别人。

当xupload小部件视图包含<form>时会发生这种情况,因此当它呈现时它会嵌套在CActiveForm中。

修复它的方法之一:

将CActiveForm小部件放在 create.php

将标准xupload表单视图(... \ protected \ extensions \ xupload \ views \ form.php)中的所有内容复制到模型_form.php(... \ protected \ views \ somemodel_form.php)

_form.php

中删除
<?php if ($this->showForm) echo CHtml::beginForm($this -> url, 'post', $this -> htmlOptions);?>

<?php if ($this->showForm) echo CHtml::endForm();?>

答案 3 :(得分:-1)

另一件事是您无法在窗口小部件配置中更改属性的值。它必须是内部服务器错误(500)发生的另一种方式的“文件”。