我有一个提交给控制器的表单,用于验证数据。如果验证失败,则会根据输入和错误重定向。这是处理表单提交的方法:
<?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
,$request
和Input
,所有显示为空。为什么没有传回数据?
为了增加这种陌生感,我有另一个项目使用几乎相同的代码,并且工作得非常好。为什么它适用于一个项目而不适用于另一个项目??
答案 0 :(得分:4)
使用withInput()
方法时,数据会以“旧”数据的形式闪现到会话中。
$request->old()
应该为您提供所有“旧”数据的数组。
$request->old('name')
应该为您提供“旧”名称数据。