バリデーションを実装しようとしてフォームリクエストファイルに、以下のようにRule::exsitsでIDの存在チェックをしたところClass ‘App\Http\Requests\Rule’ not foundが発生。
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class BookRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// falseからtrueに変更する
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$validate = [];
$validate += [
'category_id' => [
Rule::exists('categories')->where(function ($query) {
$query->where([
['category_id', 1],
]);
})
]
];
return $validate;
}
}
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;←追加
class BookRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// falseからtrueに変更する
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$validate = [];
$validate += [
'category_id' => [
Rule::exists('categories')->where(function ($query) {
$query->where([
['category_id', 1],
]);
})
]
];
return $validate;
}
}
use Illuminate\Validation\Rule;を冒頭に追加することで解決できました。
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Request;←追加
use Illuminate\Validation\Rule;
class BookRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// falseからtrueに変更する
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules(Request $request)
{
$validate = [];
$validate += [
'category_id' => [
Rule::exists('categories')->where(function ($query) use ($request) {
$query->where([
['category_id', $request->category_id],
]);
})
]
];
$validate += [
'book_name' => [
'required',
'max:10'
]
];
return $validate;
}
}
Rule::exists(‘categories’)->where(function ($query) use ($request)と$requestが使えるようにuse ($request)が追加されました。
これによって、public function rules()もpublic function rules(Request $request)に変更します。
コメント