Как поднять событие CComponent в Yii - PullRequest
2 голосов
/ 16 июня 2010

Давайте предположим, что на странице отображается компонент (скажем, график, такой как Yahoo Finance). Шаблонный вид компонента содержит набор a_hrefs, которые я хочу, чтобы переключать период в графе. Я создал событие и обработчик события в компоненте. У меня два вопроса:

  1. Как вызвать событие в компоненте Graph через эти a_hrefs (они должны быть частью Graph?)?
  2. Как перерисовать Graph без потери текущего контекста страницы (раздел, фильтр - указан как значения $ _GET)?

Мой компонент графика выглядит следующим образом:

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
 }
}

Ответы [ 2 ]

1 голос
/ 09 октября 2012

я думаю, что вы могли бы позвонить, если бы существовали обработчики событий, поэтому вызовите событие

public function setPeriod($period)
 {
  if($this->hasEventHandler('onPeriodChange'))
      $this->onPeriodChange($this);
  $this->_period = $period;
 }
0 голосов
/ 02 июля 2010

Вы можете поднять его следующим образом:

$ graph = new Graph ();$ event = new CEvent ($ graph);$ graph-> onPeriodChange ($ event);

Чтобы перерисовать график, вы должны собрать параметры, переданные через $ _GET, и использовать их снова при формировании URL для refresh ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...