Передача параметров через хук

Кому-то это может показаться более чем тривиальным, однако нигде в документах я этого не нашел.

Задача была передать id топика (или весь топик) из шаблона в хук. Реализуется это следующим образом:

например для передачи Id топика надо сделать следующее. В шаблоне:


{assign var="topicId" value=$oTopic->getId()}
{hook run='topic_activ' topic=$topicId}


регистрируем хук
public function RegisterHook()
    {

	$this->AddHook('template_topic_activ', 'CategoryAct');
}	


и принимаем эту переменную

public function CategoryAct($oTopic)
    {
	return false;
	
    }


вообщем «спасибо, кэп» :)
буду рад, если кому-то поможет.

P.S. Кстати,
$smarty->get_template_vars();
в LiveStreet не работает, поэтому так получить переменные мне не удалось

6 комментариев

avatar
просто сразу
{hook run='topic_activ' topic=$oTopic->getId()}

в вашей задаче может быть так и было, но к теме топика наверно не относится и может ввестись за правило новичками)
avatar
Либо целиком всю сущность передать
{hook run='topic_activ' topic=$oTopic}

И уже в методе хука достать айди и все что может помимо него пригодится

public function CategoryAct($oTopic)
    {
        echo $oTopic->getId();
        return false;
        
    }
avatar
а в этом случае обработчик говорил, что у него нет объекта, хотя дамп выдавал полный фарш. Думаю, конечно, это проблема больше в моих кривых руках)
avatar
Врятли. Тут есть подвох. Я всегда принимал объект через массив если не ошибаюсь.


public function CategoryAct($aParams)
    {
        $oTopic = $aParams['topic'];
        echo $oTopic->getId();
        return false;
        
    }


Конечно плохо что я пишу не проверив, но много разных комментариев и какое то обсуждение это хорошо. Надеюсь вскоре кто либо поправит. Мы все бывает методом тыка задачи решаем)
avatar
вот этот вариант и правильный.

приятно читать когда люди в топиках пускай и элементарные вещи но пишут «я нашел сам», а не «не могу найти».
avatar
я пробывал, но почему-то у меня айдишник так не передавался(
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.