【发布时间】:2015-07-26 03:01:01
【问题描述】:
我想验证“表单请求”中的路由参数但不知道怎么做。
下面是代码示例,我正在尝试:
路线
// controller Server
Route::group(['prefix' => 'server'], function(){
Route::get('checkToken/{token}',['as'=>'checkKey','uses'=> 'ServerController@checkToken']);
});
控制器
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;
class ServerController extends Controller {
public function checkToken( \App\Http\Requests\CheckTokenServerRequest $request) // OT: - why I have to set full path to work??
{
$token = Token::where('token', '=', $request->token)->first();
$dt = new DateTime;
$token->executed_at = $dt->format('m-d-y H:i:s');
$token->save();
return response()->json(json_decode($token->json),200);
}
}
CheckTokenServerRequest
namespace App\Http\Requests;
use App\Http\Requests\Request;
class CheckTokenServerRequest extends Request {
//autorization
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'token' => ['required','exists:Tokens,token,executed_at,null']
];
}
}
但是当我尝试验证一个简单的 URL http://myurl/server/checkToken/222 时,我得到了响应:no " token " parameter set。
是否可以在单独的“表单请求”中验证参数,或者我必须在控制器中完成所有操作?
ps。对不起我的英语不好。
【问题讨论】:
-
您需要只验证路由参数还是与请求参数“混合”?
-
只有路由参数。。有什么区别吗?谢谢!
-
你有没有尝试使用中间件。您甚至可以包含多个中间件。因此您可以在组路由中使用。请参考这里laravel.com/docs/5.2/middleware
-
好问题,我喜欢这个话题。
标签: laravel laravel-5 routes laravel-validation laravel-request