Форум русской поддержки Joomla!® CMS
03.12.2016, 08:44:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

как использовать несколько шаблонов VIEW?

 (Прочитано 212 раз)
0 Пользователей и 1 Гость смотрят эту тему.
john.deff
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 112



« : 27.05.2016, 01:51:07 »

есть файлы в "виде" (MVC)
administrator/components/com_mycomp/views/object_list/tmpl/default.php
administrator/components/com_mycomp/views/object_list/tmpl/default_select_create.php
administrator/components/com_mycomp/views/object_list/view.html.php

как мне в файле view.html.php
использовать нужный мне шаблон
default.php или default_select_create.php
в зависимости от задачи?
Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #1 : 27.05.2016, 01:53:43 »

Переименовать default_select_create.php например в edit.php
и сделать в виде при определенном условии $this->setLayout('edit');
Записан
john.deff
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 112



« Ответ #2 : 27.05.2016, 07:25:32 »

Переименовать default_select_create.php например в edit.php
и сделать в виде при определенном условии $this->setLayout('edit');
Отлично! встречный вопрос: как определить условие, какой шаблон я хочу использовать?

у меня в контроллере есть следующий код:
Код
class MycompControllerObject_list_ajax extends JControllerLegacy
{
   public function select_create(){
       # Вызываем нужную модель
       $model = $this->getModel('Object_list_ajax','MycompModel');
       # Обращаемся к нужному методу модели
       $model->select_create();
 
       # выводим вид на отображение!
       $this->input->set('view', 'object_list');
       $this->display();
       exit;
   }
}
 

может здесь как-то определяется?
$this->input->set('view', 'object_list');
$this->display();
« Последнее редактирование: 27.05.2016, 07:36:29 от john.deff » Записан
robert
Профи
********

Репутация: +342/-11
Offline Offline

Пол: Мужской
Сообщений: 3566


« Ответ #3 : 27.05.2016, 09:41:17 »

Не понял: вы говорите о разных layouts одного view или о разных views? И что значит
как определить условие, какой шаблон я хочу использовать?
? Условие же ваше, почему кто-то другой должен его определить?
Записан
john.deff
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 112



« Ответ #4 : 27.05.2016, 09:46:35 »

Не понял: вы говорите о разных layouts одного view или о разных views? И что значит? Условие же ваше, почему кто-то другой должен его определить?

по условию: я не могу понять за что зацепиться в условии!
говорю о layouts одного view
Записан
robert
Профи
********

Репутация: +342/-11
Offline Offline

Пол: Мужской
Сообщений: 3566


« Ответ #5 : 27.05.2016, 10:20:28 »

Все равно не понял ваш вопрос по условию. Если хотите определить layout в самом контроллере, то можно так делать
Код
$view=$this->getView('my_view','html');
$view->setLayout('my_layout');
 
Записан
john.deff
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 112



« Ответ #6 : 27.05.2016, 10:24:51 »

Все равно не понял ваш вопрос по условию. Если хотите определить layout в самом контроллере, то можно так делать
Код
$view=$this->getView('my_view','html');
$view->setLayout('my_layout');
 

если сделать так - не работает!
Код
public function select_create(){
       # Вызываем нужную модель
       $model = $this->getModel('Object_list_ajax','DeffrealtyModel');
       # Обращаемся к нужному методу модели
       $model->select_create();
 
       #выводим вид на отображение!
       //$this->input->set('view', 'object_list');
       //$this->display();
       $view = $this->getView('object_list','html');
       $view->setLayout('select_create');
       exit;
   }
 
Записан
robert
Профи
********

Репутация: +342/-11
Offline Offline

Пол: Мужской
Сообщений: 3566


« Ответ #7 : 27.05.2016, 10:27:06 »

Так надо еще
Код
$view->display();
Записан
john.deff
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 112



« Ответ #8 : 27.05.2016, 10:28:55 »

Так надо еще
Код
$view->display();

сделал, но выводит шаблон "default.php"
а надо "select_create" это файл default_select_create.php
Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #9 : 27.05.2016, 10:29:13 »

Отлично! встречный вопрос: как определить условие, какой шаблон я хочу использовать?
Это вопрос их серии угадайте чего я хочу?)

у меня в контроллере есть следующий код:
Код
class MycompControllerObject_list_ajax extends JControllerLegacy
{
   public function select_create(){
       # Вызываем нужную модель
       $model = $this->getModel('Object_list_ajax','MycompModel');
       # Обращаемся к нужному методу модели
       $model->select_create();
 
       # выводим вид на отображение!
       $this->input->set('view', 'object_list');
       $this->display();
       exit;
   }
}
 
Про масло масляное слышали? Вы знаете что дублируете код встроенный в метод display который наследуется любым контроллером?
index.php?option=com_ваш_компонент&view=ваш_вид&layout=ваш_слой и выведет все как надо!
Записан
robert
Профи
********

Репутация: +342/-11
Offline Offline

Пол: Мужской
Сообщений: 3566


« Ответ #10 : 27.05.2016, 10:34:53 »

сделал, но выводит шаблон "default.php"
а надо "select_create" это файл default_select_create.php
Это должен быть файл select_create.php.
Записан
john.deff
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 112



« Ответ #11 : 27.05.2016, 10:45:38 »

Это должен быть файл select_create.php.

да! отлично! ))
Файл контроллера:
Код
public function select_create(){
       # Вызываем нужную модель
       $model = $this->getModel('Object_list_ajax','MycompModel');
       # Обращаемся к нужному методу модели
       $model->select_create();
 
       #выводим вид на отображение!
       $view = $this->getView('object_list','html');
       $view->setLayout('select_create');
       $view->display();
       exit;
   }
 

Файл view.html.php
Код
public function display($tpl=NULL)
   {
       // Зацепка для условия определения шаблона
       // данная конструкция показывает какой шаблон используется в данный момент
       // Я это имел ввиду, когда спрашивал - как определить условие
       //$this->getLayout());
      if($this->getLayout()=="select_create"){
            // обращение к нужной модели
 
      }
 
       parent::display($tpl);
   }
 
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet