Задать вопрос
@cubooks
Web-developer

Как правильно присвоить значение переменной в контроллер Yii?

Привет!

Например, мы имеем вот такой view.php:

<?php if ($this->beginCache('item', array(
		'duration' => Yii::app()->params['cacheDuration'],
		'dependency' => array(
			'class' => 'system.caching.dependencies.CDbCacheDependency',
			'sql' => 'SELECT MAX(update_time) FROM {{items}}'
		),
	))) { ?>
	<?php $this->widget('AMListView', array(
		'id' => 'items',
		'dataProvider' => $dataProvider,
		
		'pager' => array(
			'class' => 'AMLinkPager',
		),
	)); ?>
	<?php $this->endCache(); } ?>


AMLinkPager.php - это переопределенный класс CLinkPager.php. Имеет он примерно вот такую структуру:

public function run() {
		$this->owner->owner->renderDynamic(array($this, "dynamic")); // Динамический рендер
	}

	public function dynamic() {
		if ($this->owner && $this->owner->owner) {
			$this->owner->owner->param =  'какое-то значение'; // !!!! вот этот параметр не ссетится в базовый контроллер (поведение) $this->owner->owner
 
                         print_r($this->owner->owner); // Но в дампе есть значение param!
		}

		// Какой-то код
		return $str;
	}


Как правильно присвоить параметр в базовый контроллер (поведение), если мы имеем кешируемый блок. Если очистить кеш, то, логично, все работает лишь один раз. Спасибо!

Или можно пойти каким-нибудь другим путем?
  • Вопрос задан
  • 303 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@cubooks Автор вопроса
Web-developer
Оказалось, что все очень просто:
$behavior = $this->controller->asa('yourController'); // или $this->getController();
$behavior->param = 'test';
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы