Здравствуйте, нужна помощь с компонентом! Как получить массив в представлении? Это модель Код (CODE): <?php defined('_JEXEC') or die('Restricted access'); jimport('joomla.application.component.model'); class ExpModelExp extends JModel { public $alpha; public $betta; public function getPar() { $this->alpha=array(1,3,5,7,9); $this->betta=array(2,4,6,8); } public function getAlpha() {return $this->alpha;} public function getBetta() {return $this->betta;} Вот это представление: Код (CODE): <?php defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.view'); class ExpViewExp extends JView { function display($tpl = null) { $model = &$this->getModel(); $alpha = $model->getAlpha(); $betta = $model->getBetta(); $this->assignRef('alpha', $alpha); $this->assignRef('betta', $betta); parent::display($tpl); } } Вот это вид(default.php): Код (CODE): <?php // защита от прямого доступа defined('_JEXEC') or die('Restricted access'); echo "<H3>Не прошли модерации и будут удалены</H3>"; foreach ($this->alpha as $value) {echo $value;} foreach ($this->betta as $value) {echo $value;} ?> Выходит у меня такая ошибка Warning: Invalid argument supplied for foreach() in Xhome\localhost\www\components\com_vord\views\vord\tmpl\default.php on line 5 Warning: Invalid argument supplied for foreach() in Xhome\localhost\www\components\com_vord\views\vord\tmpl\default.php on line 7 Думаю, что проблема в том, что переменные не инициализируются. Где мне вызвать методы getPar(), getAlpha(), getBetta(), чтобы получить массив? В контроллере, модели или представлении??? Возможно есть способы полегче...
С чего бы им инициализироваться то. Если инициализация в методе getPar(), а он в представлении не вызывается. Код (PHP): $par = $model->getPar(); $alpha = $model->getAlpha(); $betta = $model->getBetta(); Далее по тексту.
Правильно Вам botanist подсказывает - вызовите в представлении метод инициализации массивов "$model->getPar();" А это еще зачем ? Код (PHP): public function getAlpha() {return $this->alpha;} public function getBetta() {return $this->betta;}
botanist, спасибо. Помогло. Странно, делал так же, но ничего не выходило. Наверное какую-то деталь упустил. omfgpanda, теперь уже это ни к чему)) Я экспериментировал и сделал вот так в модели, чтобы инициализировать $alpha и $betta: Код (CODE): $obj=new ExpModelExp; $obj->getPar(); $obj->getAlpha(); $obj->getBetta(); И вот так в представлении: Код (CODE): $model=$this=getModel(); $alpha=$model->getAlpha(); $betta=$model->getBetta(); $this->assignRef('alpha', $alpha); $this->assignRef('betta', $betta); Теперь эти методы мне не нужны, буду обращаться напрямую к переменным.