我们假设我在页面上呈现了Component(比如Yahoo Finance)。组件视图模板包含一堆a_hrefs,我想在图表中切换周期。我在Component中创建了Event和Event处理程序。我有两个问题:
我的图表组件如下所示:
Yii::import('zii.widgets.CPortlet');
class Graph extends CPortlet
{
private $_period;
/* **************************************** *
* COMPONENT PROPERTIES *
* **************************************** */
public function getPeriod()
{
return $this->_period;
}
public function setPeriod($period)
{
$this->_period = $period;
}
/* **************************************** *
* GENERIC *
* **************************************** */
public function init()
{
parent::init();
// assign event handlers
$this->onPeriodChange = array($this, 'handlePeriodChange');
}
protected function renderContent()
{
$this->render('graph');
}
/* **************************************** *
* EVENTS *
* **************************************** */
public function onPeriodChange($event)
{
$this->raiseEvent('onPeriodChange', $event);
}
/* **************************************** *
* EVENT HANDLERS *
* **************************************** */
public function handlePeriodChange($event)
{
// CODE
}
}
答案 0 :(得分:1)
我认为如果事件处理程序存在,您可以调用,因此调用事件
public function setPeriod($period)
{
if($this->hasEventHandler('onPeriodChange'))
$this->onPeriodChange($this);
$this->_period = $period;
}
答案 1 :(得分:0)
你可以这样提高:
$ graph = new Graph(); $ event = new CEvent($ graph); $ graph-> onPeriodChange($事件);
要重绘图形,您应该收集通过$ _GET传递的参数,并在为refresh()形成网址时再次使用它们。