参考図書
laravelのインストール
laravelはComposerからインストールする。
composer create-project laravel/laravel laravelapp --prefer-dist
インストールしたあと、インストールしたアプリケーションフォルダからターミナルでphp artisan serve
でアプリケーションを実行する。
実行しhttp://localhost:8000
にアクセスするとlaravelの初期画面が表示される。
なぜ表示できるかというと、laravelはPHP本体にあるサーバ機能をつかって開発環境用のサーバーを立ち上げている。
ただし、動作確認用の簡易的なものであり、本格運用に耐え得るほど堅牢なサーバーではない。この機能をつかってアプリケーションを公開してはいけない。
公開パスの変更
laravelをそのまま公開すると、ルートパスはhttp://ドメイン/laravelのプロジェクト名/public
となる。
/
がルートパスになるよう、サーバー側で表示設定をする。
MAMPの場合は以下
MAMP/conf/apache/httpd.conf
Alias / "/Applications/MAMP/htdocs/laravelapp/public/"
<Directory "/Applications/MAMP/htdocs/laravelapp/public/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
laravelプロジェクトでよく使うフォルダ
- app
- routes
- resources
appはもっとも重要かつ頻度が高い
プログラムを色々と作っていく場所
Httpフォルダの中に基本的なプログラムを作成していく
コントローラーもこの中に入れる
コントローラーは慣習的にapp/Controllers
としてControllers
フォルダの中にまとめる
routesはルーティングを設定するところ
resourcesは表示するテンプレートを置くところ
ルーティング
laravelはルーティングでアドレスと読み込み・表示される処理を紐付けている
ルーティングの設定はroutesフォルダの中で設定している
Route::get('hello', 'App\Http\Controllers\HelloController@index');
Routeクラスにgetメソッドを実行している。
第一引数にパス、第二引数にコントローラー名@アクション
を設定。
コントローラー内のアクション
アクションとは、コントローラーの中で定義する関数
例えば以下のindex
class HelloController extends Controller
{
public function index(){
$data = ['one','two','three','four','five'];
return view('hello.index', ['data'=>$data]);
}
}
表示するテンプレートの指定
viewメソッドで表示するテンプレートを指定している。
第一引数で表示するテンプレートを指定。
上記の例だとテンプレートは以下
/resources/views/hello/index
コントローラーからビューへの変数の渡し方
第二引数でテンプレートに変数を渡している
テンプレートでは配列のキーの名前が変数の名前として使える。
上記の例の場合は、$data
として$data
の配列が渡される。
public function inde($id='zero'){
$data = [
'msg' => 'こんにちは',
'id'=> $id
]
return view('hello.index', $data);
}
上記の例の場合は、テンプレートで$msg
、と$id
が使える。
テンプレート
テンプレートは普通のPHPスクリプトファイルとして記述する方法と、laravelが用意しているBladeというテンプレートエンジンを使うことができる。
Bladeには効率的にレイアウトを作成していくための機能があるので使っていったほうがよい。
Bladeを使う場合はファイル名にindex.blade.phpとする。
index.phpと両方ある場合はindex.blade.phpが優先して読まれる。
bladeの記法
bladeファイル内では変数は
{{$msg}}
のように使う。
また、bladeにはデフォルトでいくつかの構文が用意されている。
@for、@foreach、@if、@isset、@unless、@empty
また、@loopというループ処理に関わる色々な情報を取り出せる構文もある。