【PHP(Laravel)】JavaScriptの記載場所と登録方法について(jQuery含め)

【PHP(Laravel)】JavaScriptの記載場所と登録方法について(jQuery含め)

【PHP(Laravel)】JavaScriptの記載場所と登録方法について

LaravelでJavaScriptを記載する場所は2つしかありません。

  1. Viewに<script>タグを使って書く
  2. プロジェクト/public/js 内にjsファイルを置きViewで読み込む

Viewに<script>タグを使って書く

viewのblade内で次のように書くだけです。

HTMLファイルにJavaScriptを書くのと同じですね。
上のスクリプトは下の様に書く事も出来ます。

@でスタートする表記は@シンボルを使った記載です。@でスタートできる命令かどうかはありますが、基本的にblade内の@ は <?php  ?>と同じと考えて問題ありません。

ロジェクト/public/js 内にjsファイルを置きViewで読み込む

▼例:public/js/app.js

例えばこんな感じでJavaScriptを別ファイルで用意します。

それを表示するBladeで読み込みます。

▼例:resources/views/home/home.blade.php

これもHTMLでjQueryを読み込むときと変わりません。

LaravelでjQueryを読み込む方法

jQueryは公開パスがあるので、後者を利用してView内にパスを記載します。

Laravelが便利な機能の1つに『Bladeを使ったViewのテンプレート化』があります。

このblade機能を使えば、全てのファイルが読む親テンプレートにjQueryの定型リンクを張り付けるだけで全てのページに登録する事が出来ます。PHPベタ打ちの時のIncludeと同じですね。

▼例:resources/views/layouts/template.blade.php

▼44行目@yield(‘content’)で読み込むbladeの例

1行目の@extends(‘layouts.template’)で読み込む親テンプレートを指示します。
@section(‘content’)~~@endsection で親テンプレートの @yield(‘content’)にsectionで囲まれたパーツ『~~』を組み込みます。
@section(‘title’, ‘Home画面’)などの1行セクションは@yield(‘title’)にテキスト(例の場合は’Home画面’)を代入します。

ログインユーザーの区分(roletype)によって使うテンプレートを変えたいとき

▼例:resources/views/layouts/template.blade.php

親のテンプレートで@IFや@switchを使って『roletypeによる区分け』を差し込みます。

場合分け結果でそれぞれ読ませたいテンプレートを@Includeで読み込ませます。
この方法は、社員向けには比較分析データが出てくるけどログイン顧客の画面では購入履歴だけ出力すると言った表示させる内容を変える時にとても便利です。

LaravelでAjaxを読み込む

基本的にjQueryを読込めばOKです。

Ajaxは『ブラウザに実装されているJavaScriptのHTTP通信機能使って、Webページのリロードを伴わずにサーバーとデータのやりとりを行う処理』の事です。
例えば、ホームページ上のinputボックスに金額を入れると(リロードを伴わずに)税込み額を算出して表示するとか、そういった処理をAjaxと呼んでいます。

そのため『Laravel Ajax 読込』などのキーワードでブログへたどり着いてくれている方がいますが、基本的にjQueryを読込めばAjaxは使えると考えてOKです。

まとめ

blade便利ですよね。
共通HTMLを外部に出して読み込む位であれば、PHPのIncludeで十分実装できますが、@シンボルは超うれしい機能です。

どうしたってHTML内でIF分岐したりforeachしたりはありますから。