Laravel Controller

クラス

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
 public function index()
 {
  return ~;
 }
}

リクエスト

パラメータ取得

class TestController extends Controller
{
 use Illuminate\Http\Request;

 public function index(Request $request)
 {
  リクエストパラメータ取得(GET/POST共通)
  $param = $request->input(‘param’);

  判定
  if (is_null($request->input(‘param’))){
   ~
  }

  全取得
  $form = $request->all();

  全取得の内一部削除
  unset($form[‘_token’]);

  全取得したパラメータをインサート
  $this->TestModel->fill($form)->save();

  ~

  return ~;
 }
}

バリデーション

モデル
use Illuminate\Database\Eloquent\Model;

class TestModel extends Model
{
 public static $rules = [
  ’string_param’ => ‘required’,
  ’int_param’ => ‘required|integer’,
  ’datetime_param’ => ‘required|date_format:Y/m/d H:i’,
 ];

 public static $message = [
  ’string_param.required’ => ‘~が設定されていません’,
  ’int_param.required’ => ‘~が設定されていません’,
  ’datetime_param.required’ => ‘~が設定されていません’,
  ’datetime_param.date_format’ => ‘~が不正です’,
 ];
 
 ~
}

コントローラ
class TestController extends Controller
{
 use Illuminate\Http\Request;
 use App\Models\TestModel;

 public function update(Request $request)
 {
  バリデート実行
  $this->validate($request, TestModel::$rules, TestModel::$message);

  

  return ~;
 }
}

ビュー
@if (count($errors) > 0)
 <div class=”alert alert-danger”>
  <ul>
   @foreach ($errors->all() as $error)
    <li>{{ $error }}</li>
   @endforeach
  </ul>
 </div>
@endif

レスポンス

ビューファイル指定

return view(“PhpUnit/index”);
※resources\views\PhpUnit\index.blade.phpを作成しておく事

ビューファイル+データ

単一データ
$data = [
 ~
];
return view(“PhpUnit/index”, [‘data’ => $data]);

複数データ
$data = [
  “data1” => $data1,
  “data2” => $data2,
];
return view(‘test.normal’)->with($data);

Json

$response = [
 ’item1′ => 123,
 ’item2′ => 456,
];
return json_encode($response, JSON_UNESCAPED_UNICODE);

リダイレクト

通常

return redirect(‘test/index’);

ステータスコード付き

return redirect(‘test/index’, 301);

セッションの条件に応じて

return redirect->intended(‘test/index’);

Sessionに保存されているurl.intendedがある場合はそのページにリダイレクト
もしない場合にtest/indexへリダイレクト

元のページへ戻す

return back()
 ->withInput() // 入力値の保持
 ->withErrors([‘message’ => ‘パスワードが違います’]);

 
 
Laravel

次の記事

Laravel View