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
にはモジュール名::
をつけなきゃ丸コピでは動きません。