モジュールの作成
作成はarisanコマンド上で行い 「php artisan module:make モジュール名 」という形式になります。
今回はサンプルの為にtestをいうモジュールを作成します。
php artisan module:make test
コマンドを入力した後、以下のようなメッセージが表示されると、
モジュール作成が完了です。
Module [Test] has been created successfully.
Generating optimized class loader
モジュールが作成されるとappフォルダ内にModulesというフォルダが作成され、
直下に指定したモジュールが作成されます。
*作成されたフォルダ群
* - フォルダ
- app
...
- Modules
- Test *作成されたモジュール
- Console
- Databases
- Http
- Controllers
- Middleware
- Requests
.gitkeep
routes.php
- Provider
- Resources
- Lang
- Views
.gitkeep
modules.json
動作確認
ここで作成したtestモジュールの動作確認をします。
ルートファイルを定義し、コントローラーとビューファイルを作成しました。
モジュールを作成した際に、
routes.phpのファイル内でルートグループがデフォルトで設定されています。
* routesファイル
// app/Modules/Test/Http/routes.php
Route::group(['prefix' => 'test'], function () {
// test/hello
Route::get('/hello', [
'uses' => 'HelloController@get_hello'
]);
});
routesファイル内でコントローラーを定義する時は、
作成したモジュール内のnamespaceが自動的に割り当てられます。
*コントローラー
// app/Modules/Test/Http/Controllers/HelloController.php
namespace App\Modules\Test\Http\Controllers;
use App\Http\Controllers\Controller;
class HelloController extends Controller
{
public function get_hello()
{
// module名::テンプレート
// app/Modules/Test/Resources/Views/hello.blade.php を参照
return view('test::hello');
}
}
*テンプレート
{{-- app/Modules/Test/Resources/Views/hello.blade.php --}}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>Hello Test Module!!</h1>
</body>
</html>
ブラウザ上から URL/test/helloにアクセスし、” Hello Test Module!! ”と表示されていれば完了です。
コントローラーからモジュール内のviewを参照する時に注意するのが、
view('module名::テンプレート') という形式になることです。
module名が定義されていなければ、
デフォルトのapp/resourcesフォルダ内のビューが参照されます。
冒頭でも書いたとおり、他にも何種類かモジュールプラグインがリリースされているので、
モジュール化する必要性が出てきたら参考にしてください。