¿Cómo anular una clase de modelo en PyroCMS (Laravel, PHP)?

Instalé PyroCMS y lo extiendo para convertirlo en un Sistema de Gestión de Aprendizaje (LMS) donde solo los usuarios registrados pueden ver las páginas, y las páginas solo comienzan a ser visibles un número variable de días después de que un usuario se inscriba en el curso .

(Es decir, la Lección 1 del Módulo 1 puede desbloquearse y ser visible inmediatamente, pero la Lección 2 puede configurarse para ocultarse hasta 1 día después, y la Lección 3 puede hacerse visible X días después, etc.)

Cómo logré esto fue escribiendo un paquete Laravel con esta migración:

Schema::table('pages_pages', function (Blueprint $table) { $table->string('drip_delay')->nullable()->after('str_id'); }); 

Luego creé una clase DrippablePagesServiceProvider con esto en la función boot() :

 $this->app->bind('Anomaly\PagesModule\Http\Controller\PagesController', 'me\DrippablePages\PagesController'); //https://laravel.com/docs/5.6/container#binding 

PagesController mi PagesController personalizado para mostrar una vista especial cuando el usuario que está conectado intenta acceder a una página demasiado pronto. Esta funcionalidad está funcionando totalmente bien.

Pero en lugar de editar el campo drip_delay directamente en la base de datos como he estado haciendo, preferiría poder editar justo al lado de los otros campos en la URL / admin / pages / edit / 4.

Estoy bastante seguro de que necesito anular varias partes de PagesModule , como PageEntryFormSections ( doc ). Y creo que tengo ese trabajo.

Pero cuando paso por Xdebug, veo que el PageModel que se ve en esta línea (¿a través de la dependency injection? †) en edit() dentro de Http\Controller\Admin\PagesController todavía no muestra mi nuevo campo drip_delay .

¿Cómo puedo anular PageModel o hacer lo que sea necesario para que muestre el campo drip_delay en esta vista del panel de administración?

† Los documentos de Laravel sobre contenedores y controladores implican esto.

Para anular un modelo primero, necesita uno nuevo que amplíe el modelo que desea anular:

  

Luego, dentro del ServiceProvider debe enlazarlo invertido:

  \Ryan\ExtenderModule\Post\PostModel::class, ]; } 

Eso es todo. Buena suerte ))