ラボ > Laravel、Lumen:基本、views関連

Laravel myチートシート

作成日:2019-03-25, 更新日:2022-12-22

PATHと内容

バージョンや運用者によっては構成が変わるコトもある。
下記は「Laravel 5.7.28」をベースに少しフォルダやファイルを追加した状態

PATH めも
app\ app\Http\Controllers 各コントローラーたち
app\ app\Http\Middleware ミドルウェアたち
app\ app\Http\Kernel.php ミドルウェアの登録設定
app\ app\helpers 独自関数置き場(フォルダ名は任意で作成)
app\ app\model モデル置き場(フォルダ名は任意で作成)
app\ app\Providers プロバイダー置き場
app\ app\Validator\CustomValidator.php 独自のバリデーション(フォルダ・ファイル名は任意で作成→プロバイダーで設定必要)
app\ app\〇〇〇 他にもいくつかあるが未調査
config\ config\app.php プロバイダーやヘルパー関数の設定、その他色々
config\ config\〇〇〇 他にもいくつかあるが未調査
resources\ resources\lang\〇〇〇 各言語別の設定(バリデーションの日本語化などで利用)
resources\ resources\views 各ビューファイルたち
resources\ resources\〇〇〇 他にもいくつかあるが未調査
routes\ routes\api.php ルーティング設定:「/api/〇〇〇」でアクセスがあったとき専用
「app/Providers/RouteServiceProvider.php」の「mapApiRoutes()」でURLなどの設定アリ
routes\ routes\web.php ルーティング設定
routes\ routes\〇〇〇 他にもいくつかあるが未調査
vendor\ vendor\laravel\framework\src\Illuminate\〇〇〇 あちこちにある「use Illuminate\〇〇〇」たちのPATH
.env .env 各種環境、初期設定(ステージングやテスト環境、DBの接続先など)

ルーティング:routes/web.php

・「http://example.com/zebra/〇〇〇」のアクセスは
・「コントローラー:app\Http\Controllers\zebra\Controller.php」を呼び出す
※第一階層のURLはどうするのが正解なのかは、まだ不明(ひとまず「root\Controller.php」を呼び出すようにする)

▼prefixとnamespaceでグループ化

// 「URL:/〇〇〇」は「コントローラー:root\Controller.php」を呼び出すが正解か?
Route::namespace('root')->group(function () {
  Route::get('/',             'Controller@index');
  Route::get('hello/{hoge?}', 'Controller@hello');
});

// 「URL:/zebra/〇〇〇」は「コントローラー:zebra\Controller.php」を呼び出す
Route::prefix('zebra')->namespace('zebra')->group(function () {
  Route::get('/',             'Controller@index');
  Route::get('hello/{hoge?}', 'Controller@hello');
});

// 「URL:/kushi/〇〇〇」は「コントローラー:kushi\Controller.php」を呼び出す
Route::prefix('kushi')->namespace('kushi')->group(function () {
  Route::get('/',             'Controller@index');
  Route::get('hello/{hoge?}', 'Controller@hello');
});

Laravel ルーティングについて

コントローラー:app\Http\Controllers\〇〇〇\Controller.php

<?php
namespace App\Http\Controllers\〇〇〇; // ルーティングでのnamespace('zebra')やnamespace('kushi')になる部分
use Illuminate\Http\Request;

class Controller extends \App\Http\Controllers\Controller {
  public function index() {
    // 「ビュー」で使いたい値たち
    $viewData = array(
      'data1' => '〇〇〇',
      'data2' => '〇〇〇',
    );
    
    // 「ビュー:resources\views\〇〇〇\index.php」を呼び出す
    return view('〇〇〇.index', $viewData);
  }
  
  public function hello($hoge='') {
    // 「ビュー」で使いたい値たち
    $viewData = array(
      'hoge' => $hoge,
    );
    
    // 「ビュー:resources\views\〇〇〇\hello.php」を呼び出す
    return view('〇〇〇.hello', $viewData);
  }
}

ビュー:resources\views\〇〇〇\〇〇〇.php

▼コントローラーから渡してもらった値($viewData['hoge'])を使う場合

{{$hoge}}

URLの作成

「http://localhost/laravel-test」の中でURLを作ってもらう。

記述 出力結果
echo url(''); http://localhost/laravel-test
echo url('/'); http://localhost/laravel-test
echo url('/aa'); http://localhost/laravel-test/aa

※「ヘルパー関数」ってヤツ

URLやPATHの確認

Laravel 各PATHや現在のURLなど

formタグ関連

「Bladeのディレクティブ」ってヤツを使う。

ビューに記述(ビュー以外で使えるかは未調査)

記述 出力結果
@method('put') <input type="hidden" name="_method" value="put">
@csrf <input type="hidden" name="_token" value="〇〇〇〇〇">
<input type="hidden" name="_token" value="{{csrf_token()}}"> <input type="hidden" name="_token" value="〇〇〇〇〇">

「@method()」「@csrf()」は便利なんだけどわけが分からんようになるから好きじゃない・・・
とは言っても「_token」や「_method」が変更されてしまうコトなどを考えると使ったほうが良さげ。

あとインデントされていると「@method()」「@csrf()」でHTMLが汚くなる・・・。
→出力されたHTMLのインデントなんか気にしなければ良い。

テンプレート絡み

Laravel ビューでテンプレートを使う

独自関数

Laravel 独自関数の利用

DB絡み

Laravel DB絡み

ログ絡み

・設定、バージョンにもよるが、ひとまず「storage\logs」の下にいる

関連項目

Laravel Xamppにインストから最低限のセットまで

Laravel Cheat Sheet