プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Laravel
  • 【Laravel】「コントローラ」と「ルーティング」の基本、バリデーションの基本、「For…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Laravel】「コントローラ」と「ルーティング」の基本、バリデーションの基本、「Form」のサーバー側の処理

05.06

  • miyabisan2
  • コメントを書く

この記事は3分で読めます

コントローラの作成

1
php artisan make:controller コントローラ名(UserController等)

--resource

RESTベースでコントローラのメソッドを生成する事が可能です。なお、下記の場所にコントローラファイルが作成されます。

1
app/Http/Controllers/コントローラファイル名.php

メソッドを書く

1
2
3
4
5
6
7
8
9
10
11
<?php
 
namespace App\Http\Controllers;
use Illuminate\Http\Request;
 
class TestController extends Controller
{
    public function index(){
        return view(‘viewファイル名’);
    }
}

DBからデータを取得する。

コントローラー側

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\モデル名;
 
class TestController extends Controller
{
    public function index(){
        $変数 = モデル名::all(); //DBからデータを取得
        return view('ビューのパス',compact(‘$変数’));
    }
}

ビュー側

変数がコレクションなので下記のようにforeach構文でループを回します。

1
2
3
@foreach($変数s as $変数)
{{$変数->カラム名}}<br>
@endforeach

ファットコントローラの解消

コントローラーはできるだけ簡潔に記述する事が推奨されています。なので肥大化してきたと思ったら下記のようなディレクトリを作成し、その中に新しいクラスを作成しましょう。

1
app/Services

下記のような感じで静的メソッドとして肥大化したコントローラの内容を切り出すと良いでしょう。

1
2
3
4
5
6
7
8
9
10
<?php
 
namespace App\Services;
 
class CheckFormData
{
  public static function メソッド名() {
 
  }
}

ルーティングの基本

routesフォルダにあるファイルを編集していきます。

ビューファイルにそのまま飛ばす場合

1
2
3
Route::get('/', function () {
    return view(‘bladeのファイル名’);
});

bladeファイル

下記の場所にあります。

1
app/resources/views/ファイル名.blade.php

コントローラに流したい場合

1
Route::get(‘アクセスするURL’,’コントローラ名@メソッド名’);

記述例

1
Route::get(‘/test’,’TestController@index’);

nameメソッド

nameメソッドを使うとビュー側で楽に記述できるようになるのでできるだけnameメソッドはルーティングでつけるようにしましょう。

1
Route::get(‘/test’,’TestController@index’)=>name('test');

blade側で{{route(名前)}}のようにヘルパー関数を使用すれば簡潔にルーティング指定する事が可能になります。

RESTfulなルーティングにしたい場合

完全なRESTfulにしたい場合

1
Route::resource('コントローラ名(users)','コントローラ名(UserController)');

RESTfulから一部絞りたい場合

1
2
3
Route::resource('コントローラ名(users)','コントローラ名(UserController)')->only([
    'アクション名1', 'アクション名2'
]);

認証しないとログインできないようにするには?

下記のようにRoute::groupでラッピングして、middlewareにてauthライブラリを指定します。

1
2
3
Route::group(['prefix' => 'コントローラ名(user等)', 'middleware' => 'auth'],function(){
    Route::get('アクション名','コントローラ名(UserController等)@アクション名');
});

バリデーションに関する知識

リクエストを作成する。

下記コマンドを実行してリクエストを作成します。

1
php artisan make:request リクエスト名

authorizeをtrueにする

認証しているかどうかを判定するauthorizeがfalseを返すようになっていると処理自体が動かないので下記のようにtrueを返すようにします。

1
2
3
4
    public function authorize()
    {
        return true;
    }

バリデーションを記述する。

下記のような感じで記述していきます。

1
2
3
4
5
6
7
8
    public function rules()
    {
        return [
            //
            'フィールド名1' => 'required|string|max:20',
            'フィールド名2' => 'required|string|max:50'
        ];
    }

バリデーションの代表的なメソッド

required

必須項目

string

文字

max:文字数

最大文字数

unique:モデル名(users等)

対象のモデル内で一意になっている事。

email

email形式であること

url

URL形式である事

nullable

NULLを許可します。

accepted

チェックボックスの場合にチェックしているかどうか。

コントローラー側で使う

1
use App\Http\Requests\作成したリクエスト名;

バリデーションをかけたいアクションのrequestクラスをRequestから作成したRequestクラスに書き換えます。

1
2
3
4
    public function store(作成したリクエストクラス $request)
    {
      処理
    }

「Form」のサーバー側の処理

前提知識

formからリクエストを行う場合はメソッドはGETとPOSTしか使えないです。(なので、PUTとかDELETEとかのメソッドは使えません。)、なので、削除等を行う場合でもどちらかのメソッドから選択することになります。

index

一覧の取得

1
2
3
use App\Models\モデル名;
 
$変数 = モデル名::all();

store、update

フォームからPOSTされたデータを受けるために使用します。storeはRailsで言えばcreateを指します。

データの取得

1
2
3
4
    public function store(Request $request)
    {
        $変数 = $request->input('フィールド名');
    }

データのDB保存

1
2
3
4
5
6
7
8
use App\Models\モデル名(User等);
 
    public function store(Request $request)
    {
        $変数名 = new モデル名(User等);
        $変数名->フィールド名 = $request->input('フィールド名');
        $変数名->save();
    }

updateの場合

基本的にはstoreと同じですが操作するオブジェクトは新規で作成するのでなく、下記のように既存のオブジェクトを使うようにします。

1
2
3
4
5
6
    public function update(Request $request, $id)
    {
      $変数名 = new モデル名(User等);
        ↓
      $変数名 = モデル名::find($id);
   }

show

findを使ってデータを取得します。

1
2
3
4
    public function show($id)
    {
        $変数 = モデル名::find($id);
    }
スポンサーリンク
  • 2020 05.06
  • miyabisan2
  • コメントを書く
  • Laravel
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2023 10.10

    【Laravel】Windowsの環境構築

  2. 2020 05.10

    【Laravel】「Blade」について

  3. 2020 05.06

    【Laravel】DBからデータを取得する(「コレクション型」、「クエリビルダー」、ページネーションなど)

  4. 2020 05.10

    【Laravel】「laravel-ui」について

  5. 2020 05.06

    【Laravel】基本、導入、アーキテクチャ、ヘルパー関数、デバッグ方法、エラーメッセージ日本語化

  6. 2020 04.04

    【Laravel】「ディレクトリ構成」、「初期設定ファイル」、「artisanコマンド」

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Laravel】マイグレーションの基本、モデルの基本…

【Laravel】DBからデータを取得する(「コレクシ…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー