0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

大学生が0からはじめたlaravel vol4,コントローラーの利用

Last updated at Posted at 2022-04-08

コントローラの利用

コントローラ:webページの具体的な処理を行う。MVCアーキテクチャの基本となるもの

MVCアーキテクチャ

Model:データ処理全般担当(データベースアクセスに関する処理全般)
View:画面表示担当
controller:全体の制御担当。必要に応じてModelをつかってデータを取得したり、Viewをつかって画面表示する

つまりwebアプリケーションにアクセスするとコントローラーが処理を行う。必要に応じてビューやモデルをつかって画面表示やデータベースを扱う。

コントローラーの作成

コントローラーはPHPスクリプトファイルとして作成。artisanコマンドを使用。

php artisan make:controller コントローラー名

コントローラーはapp/Http/Controllers内に作成

アクションを追加

コントローラーに処理を追加することです。
メソッドの形で記載する
記載した後アクションを使うためにアクションにルートを割り当てる設定が必要

ルート情報の準備

routesフォルダ内web.phpにて

Route::get('hello''コントローラー名@アクション名')

こういった記述をする。これによって
第一引数(今回はhello)のアドレスにアクセスすると第二引数(コントローラー名@アクション名)に記載されたアクションが実行される
第一引数ではルーティングの追加で記載した任意パラメータと必須パラメータがあります。任意パラメータをとアクセス時に引数を記載しなくてもエラーにならない

複数アクションするとき

まずコントローラーに二つアクションするためのメソッドを記述する。
ex)

 class HelloController extends Controller
    {
      
       public function index() {
           global  $end;        
           $html = 
                '<a href="/hello/other">go to Other page</a>'  //aタグを押したらotherへ飛ばす
               . $end;
           return $html;
       }
    
       public function other() {
//処理を記載
       }
    
    }

つづいてroutesでルーティングする
ex)

Route::get('hello','HelloController@index');
Route::get('hello/other','HelloController@other');

このようにすることで複数のページに対応できる
アクションとアドレスの関係はwebの暗黙の了解に従うこと

シングルアクションコントローラー

複数アクションを用意するのとは逆に「一つのコントローラーに一つのアクションしか用意しない」というスタンスの設計
この場合シングルアクションコントローラーとしてクラスを用意する

class コントローラ extend Controller
{
 public function __invoke() {

//アクション処理

   }
}

見てわかる通り「__invoke」というメソッドを使う
ちなみにinvokeは「呼び出す」という意味です。
ルート情報の設定としては

Route::get('アドレス名','コントローラー名');

とすればよい

RequestとResponse

リクエスト:クライアントからサーバーに送られる情報
レスポンス:サーバーからクライアントに返送される情報

アクションメソッドの引数定義
Request,Responseを利用するためにuse文を追記

use Illuminate\Http\Request;
use Illuminate\Http\Respomse;

これで両方のクラスが使える
アクションメソッドの引数に盛り込む

public function index(Request $requst,Response $response){
//アクション処理
}

Reqestの主なメソッド

$request->url();      ①
$request->fullUrl();     ②
$request->path();     ③

①:アクセスしたurlをクエリー一文字列省略して返す
②:アクセスしたurlを完全な形で返す
③:ドメイン下のパスだけ返す

Responseの主なメソッド

$this->status();   ①
$this->content();  ② 
$this->setContent(値);   ③

①:アクセスに関するステータスコード(正常なら200)
②:コンテンツの取得
③:引数の値にコンテンツを更新

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?