Laravel 5的输入旧值为空

11

我的路由在这里

Route::get('sign-up', ['as' => 'signUp', 'uses' => 'UserController@signUpGet']);
Route::post('sign-up', ['as' => 'signUpPost', 'uses' => 'UserController@signUpPost']);
控制器
return redirect('signUp')->withInput();

查看

    <form role="form" method="POST" action="{{route('signUpPost')}}"> 
        <input type="text" class="form-control" name="username" value="{{ old('username') }}">
</form>

{{old()}} 函数返回空值。
编辑
我已经采取了措施。

NotFoundHttpException in RouteCollection.php line 145:

你的会话是否正常工作? - Laurence
是的,我的会话正常工作。 - balkondemiri
你确定输入已经发送了吗?我在<form>中没有看到任何提交按钮? - Laurence
我测试了我的表单,它可以工作。我已经得到了提交按钮。 - balkondemiri
是的 - 但在您的控制器中 - 在重定向之前 - 如果您执行 dd(Input::all()) - 用户名是否填写在那里? - Laurence
6个回答

26

你的问题似乎是您最初没有提交用户名:

<form role="form" method="POST" action="{{route('signUpPost')}}"> 
        <input type="text" class="form-control" name="username" value="{{ old('username') }}">
</form>
表格内没有“提交”按钮,如果在表格外提交,则不会包含用户名。请在您的表格中添加“提交”按钮,然后再试一次。
<form role="form" method="POST" action="{{route('signUpPost')}}"> 
        <input type="text" class="form-control" name="username" value="{{ old('username') }}">
        <input type="submit" value="Submit">
</form>

编辑 - 同时您的控制器有误。应该是这样的:

 return redirect()->route('signUp')->withInput();

我应该使用 redirect() 吗?redirect() 返回错误(RouteCollection.php 第145行中的 NotFoundHttpException)。如果我使用 view('sign_up'),它不起作用:(。我添加了提交按钮。 - balkondemiri
请发布您的完整控制器。 - Laurence
我的控制器 http://laravel.io/bin/9vR4R 我的路由 http://laravel.io/bin/Delwy 我的视图 http://laravel.io/bin/PXxl3 - balkondemiri

13

3
withInput() 方法会自动调用 Request::flash() 或 $request->flash() 来添加闪存数据。 - Jacob Kranz

0

我的问题是由输入框中的"data-prefill"引起的。一旦我将其移除,它就可以正常工作了。


0

在注册视图中,您的名称应与 RegisterController 文件中的 create() 和 validate() 方法中的键对应。


添加一个详细解释答案的代码片段会很棒。 - Eyad Mohammed Osama

0
            <div class="form-group @if($errors->first('username')) has-error @endif">
              <label for="username" class="rtl">Enter user name </label>
              <input type="text" name="username" class="form-control rtl basic-usage" id="username" placeholder="Enter user name" value="{!! old('username') !!}">
              <span class="help-block required">{{$errors->first('username')}}</span>
            </div>

以上的表单字段将显示先前输入的旧值。 将显示验证错误(您必须单独指定错误)。 有一个占位符。 使用Bootstrap使其外观更好(添加Bootstrap)。


-3
你可以尝试这样写:{{ Input::old('username') }}。这段代码与编程有关。

应该使用 return redirect('signUp')->withInput(); 吗?如果我使用 return view('signUp'),你的代码将无法工作。如果我使用重定向函数,我会遇到路由错误。 - balkondemiri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接