Помогите реализовать: 1 контроллер, 1 модель, 1 вьювер, но много темплейтов

Discussion in 'Создание расширений для Joomla' started by shinaz, Jan 23, 2010.

  1. Offline

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

    Joined:
    Jan 23, 2010
    Messages:
    4
    Likes Received:
    0
    Gender:
    Male
    А теперь подробней о задаче..
    Пишу электронный журнал успеваемости и посещений с разделением по доступу в front-end на студента, преподавателя и админа. Начал писать компонент и с толкнулся с проблемой большого кол-ва view='значение', а следовательно и большого количества каталогов в каталоге views.

    Покажу на примере для админа что получается и к чему стремлюсь(ниже структура компонента):
    em.php
    controller.php
    controllers/adm.php
    models/adm.php

    views/adm/view.html.php
    views/adm/tmpl/default.php
    //эти две строки по умолчанию для админа

    Теперь допустим мне надо посмотреть список студентов делаем ссылку с параметром view=students, получается надо создать

    views/students/view.html.php
    views/students/tmpl/default.php

    И так далее...

    А вот что хочется

    em.php
    controller.php
    controllers/adm.php
    models/adm.php

    views/adm/view.html.php
    views/adm/tmpl/default.php
    views/adm/tmpl/default_student.php
    views/adm/tmpl/default_listcat.php
    views/adm/tmpl/default_.........php
    и.т.д

    Т.е. получать в файле views/adm/view.html.php какие-то данные из модели, а затем подгрузить нужный темплейт в зависимости от параметров task
     
  2.  
  3. omfgpanda
    Offline

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

    Joined:
    Jan 22, 2008
    Messages:
    673
    Likes Received:
    53
    Gender:
    Male
    так в чем проблема ? В файле, где Вы подключаете шаблон сделайте проверку на параметр, и в зависимости от значения подключайте нужный Вам шаблон.
     
  4. Offline

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

    Joined:
    Jan 23, 2010
    Messages:
    4
    Likes Received:
    0
    Gender:
    Male
    Спасибо за ответ, до этого варианта я додумался сам, но хотелось бы иметь возможность в контроллере вызвать вместо parent::display() допустим parent::ShowList('list'), где ShowList - это метод во вьювере. И вообще возможно ли такое реализовать???
     
  5. Offline

    botanist Активист => Cпециалист <=

    Joined:
    Feb 15, 2009
    Messages:
    461
    Likes Received:
    49
    Gender:
    Male
    Код (PHP):
    1. $view = $this->getView('ViewName','html');/*вызываем обьект представления,
    2.       чтобы можно было пользоваться его функциями*/
    3. $view->ShowList('list'); //Вызов метода представелния
    4. $view->display('form');/*Говорим представлению (view), что показать все нужно в шаблоне default_form.php,
    5.       а не в обычном default.php. Если в методе display представления задан параметр, то представление вызывает шаблон
    6.       из файла default_параметр.php, если параметр не задан, то по умолчению подключается шаблон default.php*/
     
  6. Offline

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

    Joined:
    Jan 23, 2010
    Messages:
    4
    Likes Received:
    0
    Gender:
    Male
    Огромное спасибо за пост... Это именно то, что я хотел. Думаю тему можно закрывать
     

Share This Page

Loading...