Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 125 Ответов
  • 6299 Просмотров
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Хотя че это я вру )
Код: php
<div class="list-wrapper">
<?php
$this->setLayout( 'list' );
echo $this->loadTemplate();
?>
</div>
Отрендерит то что в слое list! И весь код списка можно хранить только в файле list! И никаких дублей кода!
белый экран
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Только зачем для всего этого делать две вьюхи то?!

Я так понял что там много отдельных списков на странице ( ну или два списка ) будут каждый со своими данными и пагинацией.  И все на аяксе.
« Последнее редактирование: 27.02.2015, 16:18:51 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Нет, в данном частном случае список только один, но кто знает, где еще понадобится вывести 100500 этих списков.

Хотя через layouts выводить, имхо, правильнее будет - для этого слои и придуманы, но как быть, если списков несколько, а getListQuery возвращает только 1 запрос?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Ну да только к этому слою лист нужно еще прикрутить отедельную модель и пагинацию. Там ведь список должен быть. Кстатии про с контроллер я чет не подумал. Действительно можно было вызвать контроллер по умолчанию и с помощью него разрулить все. Как то так:
Код: php
public function renderView($name, $componentName)
{
   $controller = JControllerLegacy::getInstance($componentName);
   $model = $controller->getModel($name);   
   $view = $controller->getView($name, 'raw');   
   $view->setModel($model);
   ob_start();
       $view->display();
       $out = ob_get_clean();
   return $out;
}

По мне так удобно любую raw вьюху можно отрисовать так. Можно в хелпер засунуть метод, неважно..
туплю уже, что в контроллере быть должно?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
еще не понятно как можно отдельный слой отдать аяксом
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
еще не понятно как можно отдельный слой отдать аяксом
да-да, у меня пока только белый экран получается вообще
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
туплю уже, что в контроллере быть должно?

Ну я так для примера скинул, я не проверял на работоспособность
интернет-блог: http://websiteprog.ru
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Вобще все эти слои (или партиалы в других фреймворках) служат только для того чтобы в коде шаблона не было повторяющегося кода, или чтобы разбить вывод шаблона на куски. Запихнуть туда конечно можно всякого но там ведь список нужен с пагинацией с сортировкой возможно а значит работа с данными, выборка, так без отдельной модели не обойтись имхо.
« Последнее редактирование: 27.02.2015, 16:34:04 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
view.html
Код: php
      $this->item = $this->get('Item');
      $this->items = $this->get('Items');
      $this->rq_count = count($this->items);
      $this->pagination = $this->get('Pagination');
     
      JLayoutHelper::$defaultBasePath = JPATH_COMPONENT.'/layouts';
      $this->layout = new JLayoutFile('partrqlist');
default
Код: php
echo $this->layout->render(array());
В результате ошибки: не видит все то, что забивается в $this-> (items, rq_count, pagination)

В самом partrqlist ругается Fatal error: Call to undefined method JLayoutFile::get()  на $tz = $this->get('TimeZone'); (функция в модели)



Вобще все эти слои (или партиалы в других фреймворках) служат только для того чтобы в коде шаблона не было повторяющегося кода, или чтобы разбить вывод шаблона на куски. Запихнуть туда конечно можно всякого но там ведь список нужен с пагинацией с сортировкой возможно а значит работа с данными, выборка, так без отдельной модели не обойтись имхо.
Так Istaan желает все это в одной модели совместить, что я сейчас и пытаюсь сделать


Спойлер
[свернуть]
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Догнал с передачей данных в слой...
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Нет, в данном частном случае список только один, но кто знает, где еще понадобится вывести 100500 этих списков.
Ни разу не видел ни одного сайта на котором в пределах одного компонента больше одной пагинации )Можете хотя бы показать такого динозавра ?) Как по мне у сайта с таким подходом большие проблемы с UI!
Но даже учитывая такое нам нужна все равно ОДНА модель!


белый экран
а включить отображение ошибок и написать какую ошибку выдает?
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Отображение ошибок включено, ничего не выдает, даже вот так: $this->setLayout('list'); var_dump($this); - уже тишина
Про "диноавра": http://ekb.credithelp24.ru/calendar
Ну да ладно, пока со слоями пробую
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Слой вывел, однако ни пагинация ни лимитбокс не работают
« Последнее редактирование: 27.02.2015, 17:13:33 от AlekVolsk »
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Отображение ошибок включено, ничего не выдает, даже вот так: $this->setLayout('list'); var_dump($this); - уже тишина
вы в файле default.php это выводите? версия Joomla какая?


Про "диноавра": http://ekb.credithelp24.ru/calendar
Все равно это можно сделать одной моделью и видом и без костылей!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Слой вывел, однако ни пагинация ни лимитбокс не работают
а подробнее какие ошибки пишет консоль браузера?!
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
У каждого разрарботчика свои заморочки конечно. Но вписаться идеально в рамки MVC ни один сложный проект не способен. Я бы не называл все что не вписывается в эти рамки ( Да и какие там вобще рамки?)  костылями. Для меня костыли это в слои запихивать выборку и AJAX пагинацию.
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
У каждого разрарботчика свои заморочки конечно. Но вписаться идеально в рамки MVC ни один сложный проект не способен. Я бы не называл все что не вписывается в эти рамки костылями. Для меня костыли это в слои запихивать выборку и AJAX пагинацию.
Это не противоречит MVC! Костыль это все что вы не можете/не умеете делать средствами системы, и пишете свою прослойку которая уже есть но вы не умеете ею пользоваться!
Вписаться в рамки MVC способен абсолютно любой сложный проект, при должном умении!
Хотя бы приведите пример какой сложный проект не способен вписаться в рамки MVC?!
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Если под рамками MVC подразумевать то что у одного вида должна быть одна модель и один контроллер то да в такую рамку не впишутся по настоящему сложные проекты а если впишутся то с костылями как раз. А так я просто не знаю что вы под этим подразумеваете. По мне так если код удобен и хорошо написан неважно вписывается он куда то или не вписывается тем более в такие абстрактные понятия

Ну и кстатии если вы сможете красиво оформить вывод нескольких отдельных списков с AJAX пагинацией на одной  странице с помощью слоев, то это замечательно. Если это будет интересное и простое решение, я сам им буду пользоватся в будущих проектах.  Но мне пока не ясно как вы к этому всему будете прикручивать выборку и AJAX запросы, да еще так чтобы без гемора..
« Последнее редактирование: 27.02.2015, 18:30:08 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
J3.4, чистая + шаблон master2
в консоли чисто, только при клике на ссылки пагинатора в URL добавляется ?start=5 (у меня 5 в общих настройках по умолчанию стоит),  страница перезагружается.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Все равно это можно сделать одной моделью и видом и без костылей!
В методе, предложенном zomby, я не вижу костылей: в нужном месте идет рендер отдельного независимого представления, получающего данные из собственной модели и работающий со своим контроллером. Где костыль-то...
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Если под рамками MVC подразумевать то что у одного вида должна быть одна модель и один контроллер то да в такую рамку не впишутся по настоящему сложные проекты а если впишутся то с костылями как раз.
MVC это не одна модель и один контроллер! И сложный проект с костылями не совместим! Иначе доработка его будет катаклизмом!

По мне так если код удобен и хорошо написан неважно вписывается он куда то или не вписывается тем более в такие абстрактные понятия
Код хорошо написан на костылях? Это шутка?)

Ну и кстатии если вы сможете красиво оформить вывод нескольких отдельных списков с AJAX пагинацией на одной  странице с помощью слоев, то это замечательно. Если это будет интересное и простое решение, я сам им буду пользоватся в будущих проектах.  Но мне пока не ясно как вы к этому всему будете прикручивать выборку и AJAX запросы, да еще так чтобы без гемора..
Конечно простое решение! Ведь из getListQuery вы можете вернуть любой запрос! И подсунуть другой!
И потом банально в виде
//говорим модели сменить запрос на такой то
$this->items1 = $this->get('Items');
$this->pagination1 = $this->get('pagination');
//говорим модели сменить запрос на такой то
$this->items2 = $this->get('Items');
$this->pagination2 = $this->get('pagination');
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
В методе, предложенном zomby, я не вижу костылей: в нужном месте идет рендер отдельного независимого представления, получающего данные из собственной модели и работающий со своим контроллером. Где костыль-то...
Рендеринг MVC в MVC ну да это не костыль... это инвалидная коляска!
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Ок. Избавляемся от костылей. Что показать?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Хорошо допустим рендер будет не представления а отдельного слоя. Что ж тоже вариант, но остается вопрос как отдавать этот слой аяксом ? Слой ведь не содержит "чистых данных".
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Хорошо допустим рендер будет не представления а отдельного слоя. Что ж тоже вариант, но остается вопрос как отдавать этот слой аяксом ? Слой ведь не содержит "чистых данных".
Слой в аяксе содержит только те данные которые вы ему дадите в view.raw.php
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Ок. Избавляемся от костылей. Что показать?
Стриптиз ;D  (шутка юмора)
Вообще я же вам даже готовый пример набросал же вроде?)
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Рендеринг MVC в MVC ну да это не костыль... это инвалидная коляска!

Вы ведь исходники то наверняка читали? Там такой рендеринг сплошь и рядом. И в любом крупном конструкторе контента. Но не буду больше спорить. Вариант со слоями попробую как нибудь.
« Последнее редактирование: 27.02.2015, 19:00:04 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Вы ведь исходники то наверняка читали? Там такой рендеринг сплошь и рядом. И в любом крупном конструкторе контента. Но не буду больше спорить. Вариант со слоями попробую как нибудь.
Покажите где в исходниках внутри вида генерится другой MVC?!
*

Aleks.Denezh

  • Живу я здесь
  • 3401
  • 428 / 4
Так и что конкретно не работает?
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
я имею ввиду буферизацию вывода шаблона. Его можно выводить и совсем без MVC. Но чтобы передавать туда какие то данные как минимум модель задействовать желательно.
интернет-блог: http://websiteprog.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Применение ajax (Аякс) в модуле Joomla

Автор tm2010

Ответов: 34
Просмотров: 5314
Последний ответ 26.09.2020, 09:38:35
от b2z
Обработка AJAX в компоненте Joomla!3

Автор balancer

Ответов: 33
Просмотров: 11921
Последний ответ 23.07.2020, 07:45:53
от Dolphin4ik_1
Пагинатор в нестандартном компоненте

Автор sesil

Ответов: 8
Просмотров: 1281
Последний ответ 04.09.2019, 11:24:30
от sesil
Не видится файлы языкового пакета в созданном компоненте

Автор khachatur86

Ответов: 0
Просмотров: 1717
Последний ответ 30.03.2019, 23:35:26
от khachatur86
Стандартная система рейтингов в custom компоненте

Автор platonische

Ответов: 1
Просмотров: 1014
Последний ответ 12.02.2019, 16:55:03
от platonische