最終更新日:2019‐01-29
今日はコントローラを作成します。
処理の流れは、
- ルーティング(routes/web.php)
- コントローラ(app/Http/Controllers/***Controller.php)
となるようです。
SpringBootや、ASP.netのMVC5、Djangoなどと同じような流れと思ってよさそうです。
Controllerクラスのテンプレートファイルを、artisanコマンドで作成します。今回は承太郎クラスを作成します。
[hogeo@coresrv lalaproject]$ php71cli artisan make:controller JotaroController Controller created successfully.
作成したクラスを編集していきます。今回はターミナルからそのままviで編集していますが、どうもartisanコマンドでクラスファイルを作るとCoreserverの仕様なのか、ファイルのエンコードが「fileencoding=iso-2022-jp」となり、ブラウザで表示した際に日本語が文字化けしてしまいす。
丁寧にVSCodeなどで編集してファイルエンコードなどを確認してから保存したほうがよさそうです。artisanコマンドで生成されるクラスファイルは以下の場所になります。
vi app/Http/Controllers/JotaroController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class JotaroController extends Controller { public function sigh() { return 'やれやれだぜ。'; } }
こんな感じに編集した後に、「set fileencoding=utf-8」をvi上で設定して、上書きします。ちなみにエンコードを確認するコマンドは「set fenc?」です。
次にルーティングを編集してあげます。
[hogeo@coresrv lalaproject]$ vi routes/web.php
<?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', function () { return view('welcome'); }); Route::get('/hello', function () { return 'hello! the world!'; }); Route::get('/sigh','JotaroController@sigh');
一番下の行を追加しました。第一引数にパス、第2引数にクラスのメソッド名という感じでしょうか。ちゃんとドキュメント読んでないので慣れてきたら読もうと思います。前回の/helloのルーティングは無名関数でメソッドを設定している感じですね。
編集が終わったら、ルーティングを通した「https://lala.jamjar.jp/sigh」を確認してみます。
うまくいきました。
技術の進化についていけていないシステムエンジニア。浅く広く、何でも大体はこなせるエンジニアで重宝されてる(つもり)。でもやっぱり特化した武器欲しい。
備忘録として記事を投稿していますが、少しでも誰かの助けになればと思います。
最近はプロジェクトでReact(TypeScript )を触っています。
趣味でギター弾きます。