Как получить массив в представлении?

Тема в разделе "Создание расширений для Joomla", создана пользователем vesy, 02.07.2010.

  1. vesy
    Offline

    vesy специалист

    Регистрация:
    02.07.2010
    Сообщения:
    263
    Симпатии:
    53
    Пол:
    Мужской
    Здравствуйте, нужна помощь с компонентом! Как получить массив в представлении?
    Это модель
    Код (CODE):
    1. <?php
    2. defined('_JEXEC') or die('Restricted access');
    3. jimport('joomla.application.component.model');
    4. class ExpModelExp extends JModel
    5. {
    6. public $alpha;
    7. public $betta;
    8. public function getPar()
    9. {
    10. $this->alpha=array(1,3,5,7,9);
    11. $this->betta=array(2,4,6,8);
    12. }
    13. public function getAlpha()
    14. {return $this->alpha;}
    15. public function getBetta()
    16. {return $this->betta;}




    Вот это представление:
    Код (CODE):
    1. <?php
    2.  
    3. defined( '_JEXEC' ) or die( 'Restricted access' );
    4.  
    5. jimport( 'joomla.application.component.view');
    6.  
    7. class ExpViewExp extends JView
    8. {
    9.     function display($tpl = null)
    10.     {
    11.  
    12. $model = &$this->getModel();
    13.  
    14. $alpha = $model->getAlpha();                
    15. $betta = $model->getBetta();  
    16.   $this->assignRef('alpha', $alpha);
    17.   $this->assignRef('betta', $betta);
    18.    
    19.         parent::display($tpl);
    20.     }
    21. }



    Вот это вид(default.php):

    Код (CODE):
    1. <?php
    2. // защита от прямого доступа
    3. defined('_JEXEC') or die('Restricted access');
    4. echo "<H3>Не прошли модерации и будут удалены</H3>";
    5. foreach ($this->alpha as $value)
    6. {echo  $value;}
    7. foreach ($this->betta as $value)
    8. {echo  $value;}
    9. ?>



    Выходит у меня такая ошибка

    Warning: Invalid argument supplied for foreach() in X:\home\localhost\www\components\com_vord\views\vord\tmpl\default.php on line 5

    Warning: Invalid argument supplied for foreach() in X:\home\localhost\www\components\com_vord\views\vord\tmpl\default.php on line 7


    Думаю, что проблема в том, что переменные не инициализируются. Где мне вызвать методы getPar(), getAlpha(), getBetta(), чтобы получить массив? В контроллере, модели или представлении??? Возможно есть способы полегче...
     
  2.  
  3. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    а разве тут перед alpha и betta не должен стоять занчёк "$"?
    или что то путаю?
     
  4. Offline

    botanist специалист

    Регистрация:
    15.02.2009
    Сообщения:
    461
    Симпатии:
    49
    Пол:
    Мужской
    С чего бы им инициализироваться то. Если инициализация в методе getPar(), а он в представлении не вызывается.
    Код (PHP):
    1. $par = $model->getPar();
    2. $alpha = $model->getAlpha();
    3. $betta = $model->getBetta();

    Далее по тексту.
     
    vesy нравится это.
  5. woojin
    Offline

    woojin Местный Команда форума

    Регистрация:
    31.05.2009
    Сообщения:
    3 209
    Симпатии:
    335
    Пол:
    Мужской
    я видать немного напутал
     
  6. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Правильно Вам botanist подсказывает - вызовите в представлении метод инициализации массивов "$model->getPar();"


    А это еще зачем ?
    Код (PHP):
    1. public function getAlpha() {return $this->alpha;}
    2. public function getBetta() {return $this->betta;}
     
    vesy нравится это.
  7. vesy
    Offline

    vesy специалист

    Регистрация:
    02.07.2010
    Сообщения:
    263
    Симпатии:
    53
    Пол:
    Мужской
    botanist, спасибо. Помогло. Странно, делал так же, но ничего не выходило. Наверное какую-то деталь упустил. :)

    omfgpanda, теперь уже это ни к чему))
    Я экспериментировал и сделал вот так в модели, чтобы инициализировать $alpha и $betta:
    Код (CODE):
    1. $obj=new ExpModelExp;
    2. $obj->getPar();
    3. $obj->getAlpha();
    4. $obj->getBetta();

    И вот так в представлении:
    Код (CODE):
    1. $model=$this=getModel();
    2. $alpha=$model->getAlpha();
    3. $betta=$model->getBetta();
    4. $this->assignRef('alpha', $alpha);
    5.  $this->assignRef('betta', $betta);

    Теперь эти методы мне не нужны, буду обращаться напрямую к переменным.
     
    Последнее редактирование: 02.07.2010

Поделиться этой страницей

Загрузка...