是否有一种方法将值从控制器发送到验证器?
这是我的控制器试图发送一个值给验证器:
<?php
namespace AppHttpControllersAdminAdjectives;
use AppHttpControllersController;
use AppHttpRequestsAdjectiveRequest;
use AppModelsIucnNumber;
use IlluminateHttpRequest;
class IucnNumberController extends Controller
{
public function store(){
$request = AdjectiveRequest::rules("AppModelsIucnNumber");
}
这是一个试图获取value:
的验证。<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class AdjectiveRequest 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($model)
{
$classNumber = $model::all();
return [
'name' => "max:60|string|not_in:".collect($classNumber)->implode('name', ','),
];
}
}
但是这个方法是不正确的
如何将值发送给验证器?
正确的方法是表单请求在到达控制器之前过滤值,为此将其放入action参数:
public function store(AdjectiveRequest $request){
我认为它是更好和更正确的定义几个表单请求为不同的模型,你需要。如果你想做更多的唯一验证器,你可以在请求中检查路由名、中间件等。
我不建议这样做(因为控制器动作应该尽可能薄),但如果你仍然想在动作内部做验证(在你的情况下),你不需要做一个单独的表单请求,但做类似这里https://laravel.com/docs/9.x/validation#quick-writing-the-validation-logic,所以你直接定义规则在表单请求