2016-05-11 2 views
4

Когда я нажимаю кнопку отправки, ничего не происходит, просто обновляя страницу.Запрос подтверждения валидации формы Laravel не работает должным образом

Вот мой код:

приложение/Http/routes.php

Route::group(['middleware' => ['web']], function() { 
    Route::get('profile/edit', '[email protected]'); 
    Route::post('update_name', '[email protected]'); 
}); 

приложение/Http/Запрос/UpdateNameRequest.php

<?php 

namespace App\Http\Requests; 

use App\Http\Requests\Request; 
use Illuminate\Support\Facades\Auth; 

class UpdateNameRequest extends Request 
{ 
    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return Auth::check(); 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      'first_name' => 'required|min:2|alpha', 
      'last_name' => 'required|min:2|alpha', 
     ]; 
    } 
} 

приложение/Http /Controllers/UserController.php

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Auth; 
use App\Http\Requests; 
use App\User; 

class UserController extends Controller 
{ 
    public function __construct() { 
     $this->middleware('auth'); 
    } 

    public function editProfile() { 
     if (Auth::user()->role_id === 3) { 
      return view('profile.crew.edit');   
     } 
    } 

    public function updateName(Requests\UpdateNameRequest $request) { 
     return dd($request->all()); 
    } 
} 

и вот HTML форма

{!! Form::open(array('url' => 'update_name')) !!} 
<div class="form-group{{ $errors->has('first_name') ? ' has-error' : '' }}"> 
    <label class="control-label">First Name</label> 
    <input type="text" class="form-control" name="first_name" value="{{ old('first_name') }}" placeholder="{{ Auth::user()->first_name }}"> 

    @if ($errors->has('first_name')) 
     <span class="help-block"> 
      <strong>{{ $errors->first('first_name') }}</strong> 
     </span> 
    @endif 
</div> 
<div class="form-group{{ $errors->has('last_name') ? ' has-error' : '' }}"> 
    <label class="control-label">Last Name</label> 
    <input type="text" class="form-control" name="last_name" value="{{ old('last_name') }}" placeholder="{{ Auth::user()->last_name }}"> 

    @if ($errors->has('last_name')) 
     <span class="help-block"> 
      <strong>{{ $errors->first('last_name') }}</strong> 
     </span> 
    @endif 
</div> 
<button type="submit" class="btn btn-success">Update name</button> 
{!! Form::close() !!} 

для справки Херес выходной формы

<form method="POST" action="http://localhost:8000/update_name" accept-charset="UTF-8"> 
    <input name="_token" type="hidden" value="VViupfPaPCQCk5aeUdc27Pt2Z8J7Hx1Y2khC0IY9"> 
    <div class="form-group"> 
     <label class="control-label">First Name</label> 
     <input type="text" class="form-control" name="first_name" value="" placeholder="Hans"> 

    </div> 
    <div class="form-group"> 
     <label class="control-label">Last Name</label> 
     <input type="text" class="form-control" name="last_name" value="" placeholder="Padberg"> 

    </div> 
    <button type="submit" class="btn btn-success">Update name</button> 
</form> 

вот мой выход в PHP ремесленника маршрут: список

+--------+----------+-------------------------+------+-----------------------------------------------------------------+--------------+ 
| Domain | Method | URI      | Name | Action               | Middleware | 
+--------+----------+-------------------------+------+-----------------------------------------------------------------+--------------+ 
|  | GET|HEAD |/      |  | Closure               | web   | 
|  | GET|HEAD | home     |  | App\Http\Controllers\[email protected]      | web,web,auth | 
|  | GET|HEAD | login     |  | App\Http\Controllers\Auth\[email protected]   | web,guest | 
|  | POST  | login     |  | App\Http\Controllers\Auth\[email protected]     | web,guest | 
|  | GET|HEAD | logout     |  | App\Http\Controllers\Auth\[email protected]     | web   | 
|  | POST  | password/email   |  | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | POST  | password/reset   |  | App\Http\Controllers\Auth\[email protected]    | web,guest | 
|  | GET|HEAD | password/reset/{token?} |  | App\Http\Controllers\Auth\[email protected]  | web,guest | 
|  | GET|HEAD | profile     |  | App\Http\Controllers\[email protected]     | web,web,auth | 
|  | GET|HEAD | profile/edit   |  | App\Http\Controllers\[email protected]     | web,web,auth | 
|  | GET|HEAD | register    |  | App\Http\Controllers\Auth\[email protected] | web,guest | 
|  | POST  | register    |  | App\Http\Controllers\Auth\[email protected]    | web,guest | 
|  | POST  | update_email   |  | App\Http\Controllers\[email protected]     | web,web,auth | 
|  | POST  | update_name    |  | App\Http\Controllers\[email protected]     | web,web,auth | 
|  | POST  | update_password   |  | App\Http\Controllers\UserControlle[email protected]    | web,web,auth | 
|  | POST  | update_profile_picture |  | App\Http\Controllers\[email protected]  | web,web,auth | 
+--------+----------+-------------------------+------+-----------------------------------------------------------------+--------------+ 
+0

вы должны убедиться, что это путь правильный? public function updateName (Requests \ UpdateNameRequest $ request) Я думаю, что это должно быть только «UpdateNameRequest» –

+0

да, я уверен, что это правильный путь – emurmotol

+0

Я попытался запустить его так, как вы сказали мне, и это дало мне эту ошибку «Приложение класса \ Http \ Controllers \ UpdateNameRequest не существует' – emurmotol

ответ

3

Ваша переменная ошибка возвращается пустое значение. То почему никакие ошибки не показывают как раз кажущаяся страница обновляется. Проверка валидности работает, но значение ошибки не отображается.

Попробуйте: В приложении \ Http \ Kernel.PHP шаг \Illuminate\Session\Middleware\StartSession::class от web$middlewareGroups до $middleware

+0

Благодарим вас за идею. Я изменил «промежуточное ПО» в файле 'routes.php' с' web' на 'auth', и теперь проверка выполняется. – emurmotol

0

Установили ли вы конструктор форм? Laravel Collective сделали руководство по установке HTML & Form Facades. Вы можете найти его здесь: https://laravelcollective.com/docs/5.2/html

+0

да я. когда я просматриваю исходный код из браузера, форма выглядит нормально – emurmotol

+0

любезно проверьте его снова, я добавил вывод формы – emurmotol

0

Не уверен, что это такое, но вот несколько вещей, чтобы попробовать:

Явное добавить method => post

{!! Form::open(array('url' => 'update_name', 'method' => 'post')) !!} 

Проверьте свои маршруты, чтобы убедиться, что маршрут правильно зарегистрирован. Run:

`php artisan route:list` 

Если все остальное не попробовать использовать Postman вручную отправить запрос POST. Это, по крайней мере, позволит вам определить, является ли проблема в вашей форме или в настройке маршрута POST.

И последнее, что не связано с этой проблемой, я бы рекомендовал хранить ее просто. На таком маршруте нет необходимости иметь класс Request, просто используйте встроенную проверку.

public function updateName(Illuminate\Http\Request $request) { 
    $this->validate($request, [ 
     'first_name' => 'required', 
     'last_name' => 'required' 
    ]); 
    return dd($request->all()); 
} 
+0

Я попытался запустить 'http: // localhost: 8000/update_name' на почтальоне и дал мне html-страницу, сгенерированную laravel с эта ошибка «Упс, похоже, что что-то пошло не так. TokenMismatchException' – emurmotol

+0

, когда я запускаю это до сих пор, ничего не происходит 'public function updateName (Illuminate \ Http \ Request $ request) { $ this-> validate ($ request, [ 'first_name' => 'required', 'last_name' = > 'required' ]); return dd ($ request-> all()); } ' – emurmotol

+0

, но когда я делаю это' public function updateName (Illuminate \ Http \ Request $ request) { return dd ($ request-> all()); } 'отлично работает – emurmotol

0

Вы получаете TokenMismatchException .. убедитесь, что ваш путь хранения сеанса записи

Смежные вопросы