Всем привет!
Я создал виджет "\vendor\yiisoft\yii2\widgets\MYWIDGET.php"
В нём есть метод getLastArticles()
Мне нужно сгенерировать последние статьи во view, на подобии render() в контроллере.
Подскажите как это правильно делается, где располагаются вьюшки для виджетов?
И как их вызывать из виджета?
Render в виджете
Re: Render в виджете
Струткура папки виджета:
Вывод нужной информации и рендер представления делается в основном файле виджета, в методе "run()":
Код: Выделить всё
- widgets
-- myWidgets
--- MyWidget.php
--- views
---- index.php
Код: Выделить всё
public function run()
{
$models = $this->getLastArticles();
return $this->render('index', [
'models' => $models
]);
}
Re: Render в виджете
Это папка вендора. Свое туда не пихается. А в app\components напримерMoonlight писал(а): Я создал виджет "\vendor\yiisoft\yii2\widgets\MYWIDGET.php"
Yii2 universal module sceleton - for basic and advanced templates
Re: Render в виджете
При вызове метода render получаю ошибку
Вот код виджета
Вот снимки структуры папок и ошибки
Вот код виджета
Код: Выделить всё
<?php
namespace yii\widgets\MyWidget;
use yii\base\Widget;
class MyWidget extends Widget
{
public function init()
{
}
public function run()
{
$models = 'test';
return $this->render('index', [
'models' => $models
]);
}
}
- Вложения
-
- error.PNG (61.48 КБ) 3215 просмотров
-
- structure.PNG (3.69 КБ) 3215 просмотров
- flashimage
- Сообщения: 1517
- Зарегистрирован: 2011.01.23, 12:43
Re: Render в виджете
Я так понимаю во вьюхе у вас используется listView, в котором вы не указали dataprovider?
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.
Re: Render в виджете
Нет, view пустой.
Просто render почему-то не тот view берёт.
Вот если вызвать этот виджет на главной странице, то он продублирует контент главной страницы (возьмёт её index.php).
Возможно надо где-то переопределить пути.
Просто render почему-то не тот view берёт.
Вот если вызвать этот виджет на главной странице, то он продублирует контент главной страницы (возьмёт её index.php).
Возможно надо где-то переопределить пути.
Re: Render в виджете
В общем при вызове $this->render('index') в виджете он берет файл из папки "views/site/". Views лежит в корне сайта.
Как переопределить путь для $this->render() так, чтобы вид брался из папки views, которая находится в виджете?
Как переопределить путь для $this->render() так, чтобы вид брался из папки views, которая находится в виджете?