我有一条带有通配符日期的 GET 路线。
这一天通配符是一个字符串,如下所示:20220507 (YYYYMMDD)。
验证字符串后我希望做出正确的响应。在发送响应之前,我想验证字符串长度和格式。
我的问题是,是否可以使用 Illuminate\Foundation\Http\FormRequest 或 Illuminate\Http\Request 验证字符串 制作:请求?或者他们只接受发布请求?
代码:
php artisan make:request CalendarDayRequest
web.php 中获取路由的示例
Route::get('/calendar/{day}' , 'App\Http\Controllers\HomeController@calendar')->name('calendar');
示例控制器
use App\Http\Requests\CalendarDayRequest;
public function calendar ( CalendarDayRequest $request ) {
// Code
}
或者示例控制器 2
use Illuminate\Http\Request;
public function calendar ( Request $request ) {
$validated = $request->validate([
'day' => 'required',
]);
}
我都收到错误:无限重定向循环,重定向太多次。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,您无法验证表单请求中的路由参数
但是,您可以使用正则表达式来验证您的路线 示例:
Route::get('/calendar/{day}', 'App\Http\Controllers\HomeController@calendar') ->name('calendar') ->where('day', '/^[0-9]{4}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])$/');如果您仍想使用
validate()函数或表单请求表单请求方式 - 重写
all()方法public function all($k = null){ $data = parent::all($k); $data['day'] = $this->route('day'); return $data; }如果不起作用,请尝试以下代码
public function calendar(Request $request, $day){ $data = $request->all(); $data['day'] = $day; $validator = Validator::make($data, [ 'day' => 'required|date_format:Ymd', ]); if($validator->fails()){ // Do Something abort(404); } }Laravel 5 如何验证路由参数?
但是如果您想使用
validate()函数,我建议您将其作为请求参数发送。