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

时间:2015-07-02 07:30:37

标签: 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']]);
    }

在显示表单的页面上,我检查是否存在其中一个字段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()]);
    }

我已尝试RequestFacade$requestInput,所有显示为空。为什么没有传回数据?

为了增加这种陌生感,我有另一个项目使用几乎相同的代码,并且工作得非常好。为什么它适用于一个项目而不适用于另一个项目??

1 个答案:

答案 0 :(得分:4)

使用withInput()方法时,数据会以“旧”数据的形式闪现到会话中。

$request->old()应该为您提供所有“旧”数据的数组。

$request->old('name')应该为您提供“旧”名称数据。