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

Php Laravel 5-返回错误时为什么输入为空?,php,forms,validation,laravel,laravel-5,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 Reqeus

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

<?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']]);
    }
我尝试了RequestFacade、$request和Input,它们都显示为空。为什么数据没有被传回

更奇怪的是,我还有另一个项目,它使用几乎相同的代码,并且工作得非常好。为什么它对一个项目有效,但对另一个项目无效

使用withInput方法时,数据将作为旧数据闪存到会话中

$request->old应该为您提供一个包含所有旧数据的数组

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

当您使用withInput方法时,数据将作为旧数据闪存到会话中

$request->old应该为您提供一个包含所有旧数据的数组


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

当您实际重定向用户时,您将丢失所有post数据。在重定向之前,将post数据存储在会话中。或者在错误查找页上呈现post表单。@MichaelDibbets这不是真的。正如我在帖子中所说,在我的另一个项目中使用withInput非常好。当你实际重定向一个用户时,你会丢失所有的帖子数据。在重定向之前,将post数据存储在会话中。或者在错误查找页上呈现post表单。@MichaelDibbets这不是真的。正如我在帖子中所说,在我的另一个项目中使用withInput非常好。谢谢,这很好,但是为什么Request::input在我的另一个项目中有效,而在这个项目中无效?两者都是Laravel 5.1,代码几乎相同。我不明白。@Styphon Request::input从$\u get和$\u POST超全局变量获取输入。你的另一个项目工作的唯一方式是,如果数据是通过get/post请求数据来的,而不是来自重定向->返回->withInput情况,该情况通过将数据闪烁到会话来传输数据。这很有效,谢谢,但是为什么request::input在我的另一个项目上工作,而不是在这个项目上?两者都是Laravel 5.1,代码几乎相同。我不明白。@Styphon Request::input从$\u get和$\u POST超全局变量获取输入。另一个项目工作的唯一方式是,如果数据是通过get/post请求数据来的,而不是来自重定向->返回->带输入的情况,该情况通过将数据闪烁到会话来传输数据。
<?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()]);
    }