Laravel 如何处理表单多余参数(_token,_method)?
问题 #
1.在提交表单时会随代 _token 一起提交 ( <input type='hidden' name='_token' value='...'>
)
2.在修改方法时需要标注请求类型例如 ( <input type='hidden' name='_method' value='put'>
)
请求后,后台数据会直接接收到 _method , _token 。 每次存入数据库时都需要unset这两个参数么?
应急方法 #
if( !function_exists('__field') ){
function __field( $data )
{
$field = [
"_token" , "_method"
];
foreach ( $field as $item ){
if( isset($data[$item]) ){
unset($data[$item]);
}
}
return $data;
}
}
控制器代码
public function update(RoleSave $request, $id)
{
RoleModel::where("id" , $id)->update(__field($request->all()));
return success( 'SUCCESS');
}
翻了下手册本给模型加了白名单提供了允许批量跟新的字段,本以为就把问题解决了
此方法只支持 create 并不支持 update 意思就是说在 update 时如果带有表里不存在的字段一样会报错,这也算是解决了一半吧!
在屏蔽 Token 方面还有一个方法也是 @Summer 提供的VerifyCsrfToken 添加过滤条件
求解,更好的办法过滤掉多余参数!.
推荐文章: