【发布时间】:2018-07-05 10:17:26
【问题描述】:
我正在Laravel 5.5 中开发一个小型应用程序,我正在使用updateContact 创建一个请求并具有唯一的电子邮件验证规则,同时在控制器内使用相同的验证我可以轻松进行:
$contact = Contact::find($request->id);
Validator::make($data, [
'first_name' => 'required|max:255',
'email' => 'required', Rule::unique('contacts')->ignore($contact->id),
'address' => 'max:255',
'city' => 'max:255',
'state' => 'max:255',
'country' => 'max:255',
]);
并且可以通过我通过php artisan make:request UpdateContact 提出请求并在updateContact.php 中添加以下内容来验证:
namespace App\Http\Requests;
use App\Contact;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class UpdateContact 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()
{
$contact = Contact::find($request->id);
return [
'first_name' => 'required|max:255',
'email' => 'required', Rule::unique('contacts')->ignore($contact->id),
'company_id' => 'required',
'address' => 'max:255',
'city' => 'max:255',
'state' => 'max:255',
'country' => 'max:255',
];
}
public function messages()
{
return [
'company_id.required' => 'Company name is required'
];
}
}
但我不知道 $request->id 我该如何使用它?
【问题讨论】:
-
我不确定,但您可以将其作为属性/参数注入
rules()方法中。试试public function rules(Request $request)。然后你可以让$request->id -
@HCK Laravel 请求本身是一个
Request,因为我们采用use Illuminate\Foundation\Http\FormRequest;这是是否在其中再次注入请求的令人困惑的部分? -
您可以使用request帮助器访问当前请求
标签: php laravel laravel-5.5 laravel-validation laravel-request