2015.6.29
0からはじめるPHP#29【Laravel5で作るデータベース#3-Bladeテンプレート-】
いつか需要がでればいいなシリーズもついに29回になりましたね。
一応、こういったシリーズを続けてることには意味がありましてね。
技術的な話なので、ちょっと講座チックな書き方してますけど、僕がこの連載を通じて伝えたいことは、別に技術的な話じゃないんですよね。技術的な話はもっと分かりやすくて見やすいサイトはいっぱいあると思います。
この日記を書き続けてる意味とつながる話なんですが、例えばこの連載で伝えたいのは
「ろんぐさんはこうやって学んでいった」という過程を見せたいんですよね。
以前にも
冗談半分で「ギネス記録を目指してる」なんて話をしたんですが
("ほぼ"日更新のため数値化できないので、実際はギネス記録は無理です。)僕がこの日記を通じてやってみたいのは
人生譚を描ききるということなんですよ。
別に自分の人生に大きな価値がある、ということではないです。
そんなサイト見たことないからやりたいって思ってるんですよ。ないでしょ!?(笑)
まぁそういうわけで、技術的な内容の話というよりかは、学習した過程を見せることに僕は意味を見出してるんですよ。
先ほどの記事でもいいましたが、例えば
未だに小学生時代のMIDI作品を残してるのも、最初はあのレベルでもやってけば最終的には報酬をもらえる、きちんとした仕事として一応は成立するレベルの作品を作ることができるんですよ、というのを言ってみたいんですよね。誰かの勇気になれば幸いですね。
黒魔さんなんかと似たような例ですかね。この
冗談みたいな耳コピはガチだったらしいんですけど、そんな彼が今ではどうなっているのか気になる方は、是非調べてみてください。
まぁ、結論から言いますと
僕なんか比べ物にならないほど凄い作曲家になってます。
なんか話逸れましたけど、とりあえず言いたいのは
29日あればこのサイトぐらい作れるんですよってことです。(何)
まぁ、パッと見わからないと思うんですけど、今までの連載で取り上げた通り、この日記はプログラムじかけで動いてるんですよ。HTMLベースでやってたらリンクとかファイル管理とかめんどくさいだけなので。(笑)
僕はこうやって文章を書いているだけで、日付とかはプログラムが勝手に付けてくれてるんですよ。
(まぁ正確にはフォルダ名から読み取ってるんですけどね。)
前置きが長くなりましたが、Laravel5の話ですね。
前回はビューにデータをwithで渡すところまで行ったと思うので、次はビューの話・・・・・・と思ったんですが、ビューの基本に関しては実は前回の最初の段階でやっちゃってたんですね。
・・・・・・えーとですね。実際他に話すようなことはビューに関してはそんなないんですよね。
@extends('layout')
@section('stylesheet')
<link rel="stylesheet" href="./css/style.css">
@endsection
@section('content')
-略-
まぁそれでも、細かいところを挙げれば。
スタイルシートですが、このように指定します。基本は一緒です。
contentをyieldで前回埋め込みましたが、同様のことをやればいいだけです。CSSは普通head部に埋め込むので、そこにyield指定すればいいわけです。
重要なのはそこじゃなくて、相対アドレスですね。CSSファイルを入れる場所はちゃんと用意されてます。
public/cssという場所にあります。
で、相対パスはpublicを基準に指定すると上手く行きます。
また、通常のphp文を使いたい時は、このように通常の書き方をすれば使えます。
ただ、せっかくフレームワークを使っていることですし、不必要にphpで書く必要はないかなぁとも思っています。
あと、基本的にechoは使わないようにした方がいいかなーと思います。まぁ、上の場合は変数じゃないのでどうでもいいんですけど、変数を表示する時はbladeテンプレートの書き方の方がセキュリティ的に安全だと思います。自分で適切にエスケープできるんならいいんですけど、めんどくさいだけなのである機能を使いましょう。(笑)
<form name="Add" action="{{$url}}" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
あと、重要な点ですが
POST送信する時は"csrf_token()"を送信しないと"TokenMismatchException"が発生します。
これは
CSRF(クロスサイトリクエストフォージェリ)という攻撃防止のためのセキュリティです。つまり、意図しない外部からの送信を防ぐため、意図したページからの送信にはこのようなトークンを埋め込むことで判別する、ということですね。
もちろん、このセキュリティを個別に切ることもできるようですが、不必要にセキュリティホールを作ることもないので素直にhiddenフィールドで送信しましょう。
ちなみに
僕はここで1日ハマりました。
フォームはこのように自力で作ってもいいし
Formファサードというのが用意されているので、それを使ってもいいかなと思います。その場合はこのような処置を行わずとも、最初からトークンは自動的に埋め込まれます。
これをわざわざ使う理由って何かあるのか分からないんですが、まぁ・・・・・・今度使ってみます。(笑)
ビューのbladeテンプレートに関しては、これで基本的に事足ります。基本はHTMLですしね。
では次回はコントローラーの話に戻って、データベース操作の基本的なことをお教えしたいと思います!