Вот примеры расширения некоторых моделей потоков.
ановилPyroCMS и расширяю его, чтобы превратить его в систему управления обучением (LMS), где только зарегистрированные пользователи могут просматривать страницы, и страницы также становятся видимыми только через переменное число дней после того, как пользователь записался на курс.
(То есть, урок 1 модуля 1 может быть разблокирован и виден сразу, но урок 2 можно настроить так, чтобы он был скрыт до 1 дня спустя, а урок 3 может стать видимым через X дней и т. Д.)
Как я этого добился, написав пакет Laravel с этой миграцией:
Schema::table('pages_pages', function (Blueprint $table) {
$table->string('drip_delay')->nullable()->after('str_id');
});
Затем я создалDrippablePagesServiceProvider
класс с этим вboot()
функция:
$this->app->bind('Anomaly\PagesModule\Http\Controller\PagesController', 'me\DrippablePages\PagesController'); //https://laravel.com/docs/5.6/container#binding
Я разработал свой заказPagesController
чтобы показать специальное представление всякий раз, когда вошедший в систему пользователь пытается получить доступ к странице слишком рано. Эта функциональность работает совершенно нормально.
Но вместо редактированияdrip_delay
поле непосредственно в базе данных, как я делал, я предпочел бы иметь возможность редактировать прямо рядом с другими полями в / admin / pages / edit / 4 URL.
Я уверен, что мне нужно переопределить различные частиPagesModule, например, PageEntryFormSections (доктор). И я думаю, что у меня это работает.
Но когда мы переходим к Xdebug, я вижу, что PageModel, на который смотрятэта линия (через внедрение зависимостей? †) вedit()
вHttp\Controller\Admin\PagesController
до сих пор не показывает мой новыйdrip_delay
поле.
Как я могу переопределить PageModel или сделать все, что мне нужно, чтобы он отображалdrip_delay
поле в этом представлении панели администратора?
† Ларавел рассказывает оконтейнер а такжеконтроллеры подразумевать это.