インストールしました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など(doc)。そして、私はそれが働いていると思う。
しかし、Xdebugをステップスルーすると、参照されるPageModelこの行 (依存性注入経由††)
edit()
Http\Controller\Admin\PagesController
内まだ新しい
drip_delay
が表示されないフィールド。
PageModelをオーバーライドする方法、または
drip_delay
を表示するために必要なことを行う方法この管理パネルビューのフィールド
†Laravelのドキュメント容器 そしてコントローラー これを暗示します。
関連記事
- Laravel 8:クラス 'App \ Http \ Controllers \ Admin \ Rule'が見つかりません
- リストモデルクラスフラッターにナビゲーション画面を追加する方法
- Laravel 8:ターゲットクラスが見つかりません
- 特定のデータを取得するためのLaravelモデル
- ブレードビューコンポーネントのLaravelルートモデルバインディング
- Laravelは更新後に既存のベンダークラスを見ることができません
- Eloquentモデルのwhere()メソッドをオーバーライドする
- Django:Modelクラスを直接使用して、Formクラスを明示的に記述しないようにします
- LaravelモデルをExcelにエクスポートしますが、created_at列を日時ではなく日付のみに変更します
- Laravel:APIを使用してモデル関数に到達する方法
- カスタム外部キーとの多対多のポリモーフィックな関係をlaravel
- Laravel Eloquent QueryBuilderチェーンは元のベースクエリに影響します
- Laravel Eloquentは、役割を持つカテゴリに保存されているすべての投稿を取得します
- Laravel:orderBy関係の収集に取り組んでいない
- Laravel:親モデルから拡張する子モデルのすべてのインスタンスを取得する方法は?
- 同一のキーを持つ2つの雄弁なコレクションをマージする
- Laravelのデータ数を数える方法
- Laravel Eloquent:動的フィールドでDBを更新する方法はありますか?
- Laravel:Eloquentを使用してIDなしでbelongsTo関係を取得する
- 親が存在しない可能性がある場合に、関係のすべてのレコードを取得します
最初にモデルをオーバーライドするには、オーバーライドするモデルを拡張する新しいモデルが必要です。
その後、
ServiceProvider
の中 逆にバインドする必要があります:それで全部です。幸運を ))