Использую версию 5.2
В поле контактов есть обяз. валидируемые поля 'name' и 'email' и необз. - 'site' и 'text'
При тестировании если заполнить только 2 поля 'site' и 'text' , то должен произойти редирект на предыдущую стр., но так как не все обязательные поля заполнены специально, то поля в формах после отправки должны остаться заполненными. Но в полях 'site' и 'text' данных нет.
В шаблоне значение из сессии должно записаться в атрибут value каждого поля формы.
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" id="email" value="{{ old('email') }}" name="email" placeholder="Email">
</div>
В чем проблема? В сессию не записываются данные или не выводятся? value="{{ old('email') }}"
Механизм сессии включен в Kernel.php
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class
//\App\Http\Middleware\Mymiddleware::class
];
Если заполнить все поля и отправить, то возвращается arr
array:4 [▼
"name" => "name"
"email" => "admin@mail.ru"
"site" => "site"
"text" => "text"
]
Роут: //site52/contact/hello
Может, дело в токенах? В форме должен быть редирект
<form method="post" action="{{ route('contact',array('name'=>'hello')) }}">
Но если этот путь не прописать в VerifyCstToken.php, то выходит ошибка.
"TokenMismatchException in VerifyCsrfToken.php line 67:"
Поэтому, в VerifyCsrfToken.php прописываю исключения:
(\app\Http\Middleware\VerifyCsrfToken.php)
spoilernamespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
protected $except = [
//'your/route'
'/comments',
'http://lara52/comments',
'/pages',
'http://lara52/pages',
'/article',
'http://lara52/article',
'http://lara52/article/pages',
'/contact',
'http://lara52/contact/',
'/contact/hello',
'http://lara52/contact/hello',
];
}
Форма contact.blade.php
spoiler@extends('default.layouts.layout')
@section('content')
<div class="col-md-9">
<div class="">
<h2>Contact us!</h2>
</div>
<p>
Some text
</p>
@if(count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error}}</li>
@endforeach
</ul>
</div>
@endiа
<form method="post" action="{{ route('contact',array('name'=>'hello')) }}">
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" id="name" name="name" value="{{ old('name') }}" placeholder="Jane Doe">
</div>
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" id="email" value="{{ old('email') }}" name="email" placeholder="Email">
</div>
<div class="form-group">
<label for="site">Site</label>
<input type="text" class="form-control" id="site" value="{{ old('site') }}" name="site" placeholder="Site">
</div>
<div class="form-group">
<label for="text">Text</label>
<textarea class="form-control" id="text" name="text" rows="3">{{ old('text') }}</textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
@endsection
ContactController.php
spoilernamespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class ContactController extends Controller
{
public function show(Request $request,$id=FALSE) {
if($request->isMethod('post')) {
$rules = [
'name'=>'required|max:7',
'email'=>'required|email'
];
$this->validate($request,$rules);
dump($request->all());
}
return view('default.contact',['title'=>'Contacts']);
}
}