我有一个将更新用户详细信息的表单,但出于显而易见的原因,如果用户想要更新名称而不是电子邮件地址,它将保持不变。然而,尽管我竭尽全力,我无法绕过这一切。Laravel请求,更新验证
所以我们可以说我的电子邮件是:
,我更新我的个人资料
电子邮件仍然是[email protected]
它抛出我一个错误表示该电子邮件必须是唯一的。
所以我想这:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UserRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|alpha_spaces|min:5|max:30',
'email' => 'required|email|unique:users,email,'.$user->id,
'telephone' => 'required|numeric|max:15',
'twitter' => 'alpha_dash',
'facebook' => 'alpha_dash',
'instagram' => 'alpha_dash',
];
}
public function messages()
{
return [
'name.required' => 'Name is required',
'name.alpha_spaces' => 'Name can only contain letters and spaces',
'name.min' => 'Name must contain at least 5 characters',
'name.max' => 'Name can only contain up to 30 characters',
'email.required' => 'Email address is required',
'email.email' => 'Email address must be a right format',
'email.unique' => 'Email address must be unique',
'telephone.required' => 'Telephone is required',
'telephone.numeric' => 'Telephone can only contain numbers',
'telephone.max' => 'Telephone can only contain maximum of 11 characters',
'twitter.alpha_dash' => 'Twitter can only contain letters and dashes',
'facebook.alpha_dash' => 'Facebook can only contain letters and dashes',
'instagram.alpha_dash' => 'Instagram can only contain letters and dashes',
];
}
}
但我得到:
未定义的变量:用户
public function update(UserRequest $request, $id)
{
$user = User::find($id);
$name = $request->input('name');
$email = $request->input('email');
$twitter = $request->input('twitterp');
$facebook = $request->input('facebookp');
$instagram = $request->input('instagramp');
$telephone = $request->input('telephone');
$user->name = $name;
$user->email = $email;
$user->twitter_personal = $twitter;
$user->facebook_personal = $facebook;
$user->instagram_personal = $instagram;
$user->telephone = $telephone;
$result = $user->save();
if($result) {
$message = 'success';
}else{
$message = 'error';
}
return redirect()->back()->withInput()->with('message', $message);
}
把你的路线和刀片代码请 –
你还没有初始化UserRequest :: rules()方法中的'$ user'变量,因此错误。 – kajetons
我如何初始化它?我试图做到这一点,但我失败了 –