Читаю официальную доку по Yii2 что касается Модулей:
https://www.yiiframework.com/doc/guide/2.0/ru/stru... В принципе всё понятно и логично, но учитывая предыдущий опыт работы с CMS-ками сразу возникло острое желание слепить тестовый модуль и вывести его например в сайтбаре главной страницы:
И вот тут возник затык,
как вывести его в "чужом" экшене чужого контроллера, если модуль это "законченные программные блоки, состоящие из моделей, представлений, контроллеров и других вспомогательных компонентов."?
По ссылке вида www.site.ru/samplemodule модуль открывается, всё ок, какие есть способы интегрировать его скажем в www.site.ru/index? если у модуля своя вьюха, контроллер и даже модель. Или придется все подобные штуки делать виджетами?
Сейчас мысль такая - в методе контроллера Главной страницы вызвать объект Модуля, провести все стадии работы его методов вплоть до render() но в конце упаковать всё в переменную $module и отправить её во вьюху Главной страницы с другими данными.
Если грубо:
namespace app\controllers;
use app\modules\banner\Banner;
class SiteController extends Controller
{
public function actionIndex(){
$banner = new Banner();
$data = 'Lorem ipsum...';
return $this->render('index', [
'banner' => $banner,
'data' => $data,
])
}
}
namespace app\modules\banner;
class Banner extends \yii\base\Module
{
public $controllerNamespace = 'app\modules\banner\controllers';
public function init()
{
parent::init();
}
}
namespace app\modules\banner\controllers;
use yii\web\Controller;
class DefaultController extends Controller
{
public function actionIndex()
{
return $this->render('index');
}
}