Проблема в том, что вид (view) не находит модель компонента, хотя размещено где надо. Взял скелет готового, работоспособного компонента, изменил имена классов на свои и название представления, устанавливаю и вижу такую ошибку Fatal error: Call to a member function getGreeting() on a non-object in ... Приложил архив, подскажите, что делаю не так
Имя класса в модели строится же так: название_компонентаModelназвание_модели, т.е. если у меня компонент и модель называется statistics, то имя класса должно быть statisticsModelstatistics ?
Всё проверил на 100 рядов и обнаружил вот что, если папка вида которая в /views/ называется как-то по-другому, не как компонент, а скажем table, то он данные с модели в вид (view.html.php) не приходят и в шаблон соответственно тоже. Стоит только её назвать statistics - всё работает... Очень бы хотелось понять почему P.S. название класса в view.html.php меняю: если папка вида table - то statisticsViewtable, если папка statistics - то соответсвенно statisticsViewstatistics
все верно, в каталоге view находятся подкаталоги - одинаковые по названию, как комтроллер и модуль! а не как компонент - это всего лишь совпадение имен! Это структура MVC Joomla!
То есть, хочу новый вид, пишу новый контроллер и модель? Спасибо! А то я думал, что-то не так делаю А, да +1 в карму конечно =)
хотите новый вид - создаете во view папку с именем вида и соответствующие файлы,а с помощью существующего контроллера его вызываете. Т.е. можно организовать : Контроллер1 - модель1 - (вид1, вид2,вид3 ... видН)
Код (PHP): function __construct() { parent::__construct(); $this->registerTask( 'mytask' , 'myfunc' ); } function myfunc() { JRequest::setVar( 'view', 'view2' ); parent::display(); } Суть в том, что в переменной task содержится, по умолчанию, название модели, к которой должно перейти управление, но с помощью конструктора можно перехватить передать управление в "другое место" ) В примере передается task=mytask, контроллер обрабатывает этот параметр и вызывает функцию myfunc(), которая переключает отображение с mytask на view2.
Благодарю, принцип понятен! Но на практике пример не заработал. Как я понял, mytask - это имя компонента, оно же модели оно же вида по умолчанию, а view2 - это название того вида, которое мы хотим сделать. Добавив это в контроллер своего компонента, страница открылась, а вот данные с модели опять-таки не приходят...
папка models/ .... там должны лежать файлы ваших моделей ... если вы правильно соблюдали архитектуру MVC , то должно все заработать )