2022年09月06日
前回の記事で入力値で表示が変わるviewの仕組みと言っていましたが、厳密にはviewファイルは別にあるんですね。あの後勉強しててわかりました。まだまだ先は長い…
今回はそのViewファイルを作成していきます。少し時間が経ってしまって忘れてしまっているので簡単な流れをまとめると、
outes/web.php
に飛び、サイトURL以降のパラメーターと同じ名前のControllerがHttp/Controllers/
のディレクトリにあるのでそれに飛ぶ。routes/web.php
内で行う。文字列を返すだけであればController内に書かれた文字を返すし、デザイナーと分業している場合は別にviewファイルを作成してviewファイルの内容を表示するようにController内に書く。自分はずっと通常のHTML内でphpの変数を表示していた人間なので、正直3の作業は邪魔くさいように感じるけどどうなんでしょう。viewファイル内は当然極力プログラムのコードは入れない方がいいと思うので条件分岐はControllerでやってってなると行ったり来たりで面倒なような…
スポンサーリンクViewファイルはresources/views
ディレクトリの下にplando.blade.php
というファイルを作成します(パラメーターと同じ名前を頭につけたファイル)。これはコマンドじゃないんですね…
welcome.blade.php
を参考に見る限りではけっこうif
使ってますね。たしかに書きやすそうな表記にはなってるけど、分業としてはそれでいいんだろうか…
作成したphpファイルを下記内容にします。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Viewファイルテスト</title>
</head>
<body>
{{$message}}
</body>
</html>
通常のhtmlファイルに{{}}で変数を囲って書いてやると出力できる仕組みですね。もういちいち<?php echo 〜; ?>
みたいに指をトリッキーな動きさせなくて済むんですね。
次にControllerを編集します。現状はindexメソッドで"plandoと入力した結果です"
と直接表示するようにしている部分をこの作ったviewファイルを呼び出すようにするわけです。
app/Http/Controllers/PlandoController.php
を編集します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class plandoController extends Controller
{
public function index()
{
return "palndoと入力した結果です";
}
}
現状こうなっているコントローラークラスのindexメソッドを
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class plandoController extends Controller
{
public function index()
{
$message = "plandoと入力した結果です。";
return view('plando', ['message' => $message]);
}
}
このように変更します。$message
という変数に表示したいテキストを格納、パラメーターにplandoが入ったときviewファイルのmessage
の部分を変数$message
に置き換えるという感じでしょうか。
結果的に全部ひとりでやってる場合は書く量がやっぱり増えてるような気が…。
追々楽になることに期待しましょう。
表示した結果はこれ。変わり映えしませんが着実に進んでいると信じましょう。ここまで来ればスタイルで見た目も変えていけますね。
スポンサーリンク分業を前提にしているからか周りくどい部分はありましたが、おもしろい仕組みでした。
調べていくと、viewファイルの変数部分{{$message}}の括弧は通常のphpでいうところのechoの役目があるだけでなく、”<“や”&”などの特殊文字をエスケープ処理する役割もあるようです。
前述で<?php echo 〜; ?>
書かなくていいやーとか言ってましたが、それどころかhtmlspecialchars関数も省略できていたんですね。楽な上によく忘れてしまうのでありがたいです。
エスケープ処理を忘れてしまうと、フォームなどに不正なjavascriptを仕込まれたり危険です(XSS)。そのあたりの知識に疎い人間でも対策できてしまうのは大きいですね。こういった部分がwebアプリケーション作成に向いていると言われる所以なのでしょうか。
MVCと言いながらMができていないような気がするので次回はその部分を進めていきたいと思います。
お仕事のご依頼やご相談、弊社サービス内容に関してなど、お気軽にご相談ください。