Yii:数据未传递给视图

时间:2014-03-25 22:21:58

标签: php yii widget yii-components

拥有此小部件类:

class ValuesSetWidget extends CWidget {

public $id = null;
public $listHtmlOptions = array();
public $addDivClasses = "";
public $model;
public $attribute;
public $name;
public $value;

public function init()
{
    //registramos script básico
    Yii::app()->getClientScript()->registerScriptFile('/js/JSON.js');

    $name = ($this->model) ? get_class($this->model).'-'.$this->attribute : $this->name;
    $this->id = ($this->id) ? $this->id : 'id'.$name;

    return $this->render('application.widgets.ValuesSet.widget', array('context' => $this), true);
}

}

将这个视图作为被调用的视图:

<?php
$id = $context->id;
$buttonid = $id.'-button';
$hiddenid = $id.'-hidden';
$selectid = $id.'-select';
$dialogid = $id.'-dialog';
$htformid = $id.'-form';
Yii::app()->clientScript->registerCoreScript('jquery.ui');
Yii::app()->clientScript->registerCssFile(Yii::app()->getClientScript()->getCoreScriptUrl().'/jui/css/'.(isset($theme) ? $theme : 'base').'/jquery-ui.css');
?>
<!-- more html/php for the view here... -->

我收到这样的错误:

Variable not defined. ¿Data not being passed?

问题:当我使用render()将数据传递给小部件视图时,为什么没有传递$ context? 目标:我需要将整个上下文传递给视图文件。

2 个答案:

答案 0 :(得分:1)

您的代码未包含所有受影响的内容。但是,错误消息是您的线索。

而不是

 $id = $this_->id

使用

 $id = $this->id
widget.php中的

答案 1 :(得分:0)

抱歉:p。该错误不在该代码中。

它从来没有工作过($ this,$ this_,也没有上下文),因为我错误地引用了视图文件,来自createWidget()调用(而不是引用窗口小部件的类文件,我引用了小部件的视图文件)。这导致文件被导入/需要,因此被发送到输出但没有任何数据(因为没有数据传递给小部件创建)。

最后不是变量名称的真正问题,因为它们都不存在 - 这是错误的文件引用。