のぐそんブログ

暗いおじさんがシコシコ書くブログです。

Laravelのcontrollerの使い方メモ

Laravelでcontrollerを利用するためのメモです。

Controllerの定義方法

複数のアクションを設定

こちらが普通のやり方だと思います。 1つのcontrollerの中に複数のアクションを設定します。

routeの設定は以下。

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

controllerを作る。

php artisan make:controller HelloController

controllerの設定は以下。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
    public function index(){
        return view('hello');
    }

    public function create(){
        ...
    }
}

アクションをひとつだけ設定 シングルアクションコントローラーと呼ばれている方法で、controllerに対して1つだけアクションを定義します。

routeの設定は以下。

Route::get('hello', 'HelloController');

controllerを作る。--invokableオプションをつけます。

php artisan make:controller HelloController --invokable

controllerの設定は以下。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HelloController extends Controller
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function __invoke(Request $request)
    {
        //
        return view('hello');
    }
}

viewに変数の値を渡す

contollerからviewへの値の渡し方です。 クライアントへのレスポンス内容を表示してみます。

変数を渡す場合はcompact関数、with関数などを利用します。

view側は以下のようになります。

<body>
{{$response}}
</body>

compactの場合

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;

class HelloController extends Controller
{
    public function index(Request $request,Response $response){
        return view('hello', compact('response'));
    }
}

複数渡す場合は、

    class HelloController extends Controller
    {
        public function index(Request $request,Response $response){
            return view('hello', compact('request','response'));
        }
    }

widthの場合

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Http\Response;

class HelloController extends Controller
{
    public function index(Request $request,Response $response){
        return view('hello')-> with('response',$response);
    }
}

複数渡す場合

   class HelloController extends Controller
    {
        public function index(Request $request,Response $response){
            return view('hello')-> with(['request' => $request,'response' => $response]);
        }
    }

git pullできなかったときのメモ

git pullをしようとしたら、↓のエラーがでました。

また同じことが起きたときの為にメモです。

error: Your local changes to the following files would be overwritten by checkout:hogehoge.rb
Please commit your changes or stash them before you switch branches.

メッセージの通りにgit stashしたりしてみましたが解消しませんでした。

こちらの記事の方法で解消しました。

qiita.com

git 管理外のファイルをチェック

git ls-files -v | grep ^S

git管理に戻す。

git update-index --no-skip-worktree hogehoge.rb

Houdiniを始める前にやっておいたほうが良いかもしれない準備メモ

Houdiniを始めるにあたって、最初にやっておいたほうが使いやすいと思われる設定を学んだので備忘録として記載しています。 とは言っても3つしかないです。。。

続きを読む

Vueでunitテストをする為の基礎基礎メモ

準備

  • vue-cliでプロジェクトを作成する
  • Jestを利用する。
  • vue-test-utilsを利用する(vue-cliでプロジェクトを作成した場合はインストール済み)
続きを読む