laravel-modules で 表と裏の使い分けを
どうもこんにちは塚本です。
皆さんは表の顔と裏の顔をうまく使い分けれていますか?
ぼくはlaravel-modulesをつかうことでうまく行きました。
laravel-modules
nWidart/laravel-modulesを用いると、
システムを単一のモジュール(要素)に分けて構築していくことができます。
デフォルトのLaravelでは、app/にすべてのロジックが入っていると思います。
この構造において、
Nicolas Widartさんは「小規模なアプリならええけど、ある程度大きくなると、ある時点から探すのにめちゃ時間かかるわ」って思ったらしいです。
larave-modulesを使うと、
モジュール毎に独自のルート/コントローラー/モデル/ビュー/ビジネスロジックを設定できます。
例:塾のホームページ
例えば、マルチログイン機能が必要なWebサイトとして、塾のサイトを考えてみます。
- メイン画面(月謝とか塾の紹介とか)
- 管理者専用ページ
- 塾生専用ページ
ここで、管理者専用ページと塾生専用ページは認証機能が必要だとします。
モジュール毎に開発すると、Main,Admin,Userみたいに分けて開発できるのでやりやすいと思います。
特にroute.phpがみやすい…とおもう…
Install
Composer
composer require nwidart/laravel-modules
Publish
パッケージの設定ファイルを実行して公開します。
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
Autoloading
このままだと、
モジュールは自動的にロードされないので、composer.jsonに追記をしてください。
{
"autoload": {
"psr-4": {
"App\\": "app/",
"Modules\\": "Modules/"
}
}
}
dump-autoload
autoloadの設定を変更したので、
composer dump-autoloadを忘れないように実行してください。
Creating a Module
php artisan module
無事にインストールできたら、上記のコマンドがつかえるようになります。
php artisan module:make <module-name>
モジュールを作成するにはこちらのコマンドを実行してください。
その他のコマンドについては、こちらから参考にしてください
Using
モジュールの作成ができれば、
ホームディレクトリにModulesというディレクトリが出来ていると思います。
ここから、いつもどおり開発をすすめることが出来ます。
注意としては、Custom namespacesを読めば分かりますが、
@includeや@extendにはモジュール名::をつけなきゃ丸コピでは動きません。