Joomla 1.5 Не видит модель в компоненте

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

  1. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Проблема в том, что вид (view) не находит модель компонента, хотя размещено где надо. Взял скелет готового, работоспособного компонента, изменил имена классов на свои и название представления, устанавливаю и вижу такую ошибку
    Fatal error: Call to a member function getGreeting() on a non-object in ...

    Приложил архив, подскажите, что делаю не так
     

    Вложения:

  2.  
  3. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    это и так понятно - не правильное имя класса в моделе
     
  4. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Имя класса в модели строится же так: название_компонентаModelназвание_модели, т.е. если у меня компонент и модель называется statistics, то имя класса должно быть statisticsModelstatistics ?
     
  5. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    верно, ну может в названиии скрипта тогда ошибка - проверь все по буквам! должно быть statistics.php
     
  6. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Всё проверил на 100 рядов и обнаружил вот что, если папка вида которая в /views/ называется как-то по-другому, не как компонент, а скажем table, то он данные с модели в вид (view.html.php) не приходят и в шаблон соответственно тоже. Стоит только её назвать statistics - всё работает... Очень бы хотелось понять почему
    P.S. название класса в view.html.php меняю: если папка вида table - то statisticsViewtable, если папка statistics - то соответсвенно statisticsViewstatistics
     
  7. Tureckiy
    Offline

    Tureckiy Недавно здесь => Cпециалист <=

    Регистрация:
    11.04.2009
    Сообщения:
    423
    Симпатии:
    30
    Пол:
    Мужской
    все верно, в каталоге view находятся подкаталоги - одинаковые по названию, как комтроллер и модуль! а не как компонент - это всего лишь совпадение имен! Это структура MVC Joomla!
     
    SIDJoomler нравится это.
  8. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    То есть, хочу новый вид, пишу новый контроллер и модель? Спасибо! А то я думал, что-то не так делаю :)

    А, да +1 в карму конечно =)
     
  9. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    хотите новый вид - создаете во view папку с именем вида и соответствующие файлы,а с помощью существующего контроллера его вызываете. Т.е. можно организовать : Контроллер1 - модель1 - (вид1, вид2,вид3 ... видН)
     
  10. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Да-да так бы было здорово, а как его в контроллере вызвать не подскажите?
     
  11. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Код (PHP):
    1. function __construct()
    2.      {
    3.          parent::__construct();
    4.          
    5.          $this->registerTask( 'mytask'  , 'myfunc' );
    6.          
    7.          
    8.  
    9.      }
    10.    
    11.     function myfunc()
    12.     {
    13.         JRequest::setVar( 'view', 'view2' );
    14.        
    15.  
    16.         parent::display();
    17.     }

    Суть в том, что в переменной task содержится, по умолчанию, название модели, к которой должно перейти управление, но с помощью конструктора можно перехватить передать управление в "другое место" )

    В примере передается task=mytask, контроллер обрабатывает этот параметр и вызывает функцию myfunc(), которая переключает отображение с mytask на view2.
     
    SIDJoomler нравится это.
  12. Offline

    SIDJoomler Недавно здесь

    Регистрация:
    13.08.2010
    Сообщения:
    19
    Симпатии:
    0
    Пол:
    Мужской
    Благодарю, принцип понятен! Но на практике пример не заработал.
    Как я понял, mytask - это имя компонента, оно же модели оно же вида по умолчанию, а view2 - это название того вида, которое мы хотим сделать. Добавив это в контроллер своего компонента, страница открылась, а вот данные с модели опять-таки не приходят...
     
  13. omfgpanda
    Offline

    omfgpanda Недавно здесь => Cпециалист <=

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    папка models/ .... там должны лежать файлы ваших моделей ... если вы правильно соблюдали архитектуру MVC , то должно все заработать )
     

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

Загрузка...