Laravel 5 - 为什么在返回错误时输入为空?

Sty*_*hon 1 php forms validation laravel laravel-5

我有一个提交给控制器的表单,该控制器验证数据。如果验证失败,它会重定向回输入和错误。这是处理表单提交的方法:

<?php namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller {

    /**
     * Create a new user.
     *
     * @param Reqeust       $request
     *
     * @return Void
     */
    public function postCreate(Request $request)
    {
        $user = new User;
        $rules = $user->rules();
        $rules['password'] = 'required|confirmed|min:8';
        $v = \Validator::make($request->except('_token', 'roles'), $rules);
        if ($v->fails())
        {
            return redirect()->back()->withInput($request->except('_token', 'password', 'password_confirmation'))->withErrors($v);
        }
        $user->fill($request->except('_token', 'password', 'password_confirmation'));
        $user->password = \Hash::make($request->input('password'));
        $user->save();

        return redirect()->route('webmanAccounts')->with('messages', [['text' => 'User account created', 'class' => 'alert-success']]);
    }
Run Code Online (Sandbox Code Playgroud)

在显示表单的页面上,我检查name字段之一是否存在,如果存在,则使用数据填充 User 对象。问题input是总是空的。

<?php namespace BackEnd;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Request as RequestFacade;
use App\Http\Controllers\Controller;
use App\Models\Role;
use App\Models\User;

class UserController extends Controller {

    public function __construct(Request $request)
    {
        if ( ! $request->user()->can('accounts'))
        {
            return abort(403, 'You do not have permission to access this page.'); 
        }
    }

    /**
     * Display the create new user form and process any error messages.
     *
     * @param Reqeust       $request
     *
     * @return View
     */
    public function create(Request $request)
    {
        $user = new User;
        dump(RequestFacade::all());
        if (RequestFacade::has('name'))
        {
            $user->fill(RequestFacade::except('_token', 'roles'));
            foreach (RequestFacade::only('roles') as $role)
            {
                $user->roles()->add($role);
            }
        }
        return view('backend.user.create', ['title' => 'Website Manager :: Create New Account', 'user' => $user, 'roles' => Role::all()]);
    }
Run Code Online (Sandbox Code Playgroud)

我试过RequestFacade,$requestInput,都显示为空。为什么数据没有被传回?

更奇怪的是,我有另一个项目,它使用几乎相同的代码并且运行良好。为什么它适用于一个项目而不适用于另一个项目!?

pat*_*cus 6

当您使用该withInput()方法时,数据将作为“旧”数据闪存到会话中。

$request->old() 应该给你一个所有“旧”数据的数组。

$request->old('name') 应该给你“旧”的名字数据。