前提・実現したいこと
laravelでお問い合わせフォームを作成しています。画面転移は、input.blade.php→confirm.blade.phpとなっています。
入力された値をバリデーション後にセッションに格納し、confirm画面で表示させたいのですが、var_dump($request->session()->put($user->name)) がNULLしなってしまい、うまく格納できません。
該当のソースコード
ContactController
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\User; 7 8 9 10class ContactController extends Controller 11{ 12 //display the contact page 13 14 public function index(){ 15 return view("contact.input"); 16 } 17 18 public function post(Request $request){ 19 $this->validate($request, [ 20 'name' => 'required', 21 'email' => 'required|email', 22 ]); 23 24 $user = new User($request->all()); 25 $request->session()->put($user->name); 26 $request->session()->put($user->email); 27 var_dump($request->session()->put($user->name)); 28 return view('contact.confirm', compact('user')); 29 } 30 31 32 public function store(Request $request){ 33 $data = session()->all; 34 return view('contact.complete', compact('data')); 35 } 36} 37
input
1@extends('layouts.default') 2 3@section('title', 'お問い合わせ画面') 4 5@section('content') 6 <h1>お問い合わせフォーム</h1> 7 8 @if ($errors->any()) 9 <ul> 10 @foreach ($errors->all() as $error) 11 <li>{{ $error }}</li> 12 @endforeach 13 </ul> 14 @endif 15 16 <form method="post" action=""> 17 {{ csrf_field() }} 18 <p> 19 <input type="text" name="name" placeholder="enter name" value="{{ old('name') }}"> 20 </p> 21 <p> 22 <input type="text" name="email" placeholder="enter email" value="{{ old('email') }}"> 23 </p> 24 <p> 25 <input type="submit" value="確認する" name="contact"> 26 </p> 27 28 </form> 29@endsection 30
confirm
1@extends('layouts.default') 2 3@section('title', 'お問い合わせ画面') 4 5@section('content') 6 <h1>お問い合わせ画面</h1> 7 8 <form action="{{action('ContactController@store')}}" method="post"> 9 @csrf 10 <p>{{ $user->name }}</p> 11 <p>{{ $user->email }}</p> 12 13 <input type="submit" value="登録する"> 14 {{--@foreach($user->getAttributes() as $key => $value) 15 <input type="hidden" name="{{$key}}" value="{{$value}}"> 16 @endforeach --}} 17 18 19 </form> 20 21@endsection
試したこと
コントローラーで最初は、
$request->session()->put($user->name);
$request->session()->put($user->email);
を
$request->session()->put($user);
としたところ、
ErrorException (E_WARNING)
Illegal offset type
というエラーを吐きました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/14 08:07
退会済みユーザー
2019/04/14 08:08
2019/04/14 08:44