gpt4 book ai didi

php - Laravel 5 表单请求验证返回禁止错误

转载 作者:IT王子 更新时间:2023-10-29 00:20:46 24 4
gpt4 key购买 nike

我正在尝试使用 Laravel 5.1 的表单请求验证来授权请求​​是否来自所有者。当用户尝试通过 show.blade.php 更新表 clinics 的一部分时,将使用验证。

到目前为止我的设置:

routes.php:

Route::post('clinic/{id}', 
array('as' => 'postUpdateAddress', 'uses' => 'ClinicController@postUpdateAddress'));

ClinicController.php:

public function postUpdateAddress($id, 
\App\Http\Requests\UpdateClinicAddressFormRequest $request)
{
$clinic = Clinic::find($id);
$clinic->save();

return Redirect::route('clinic.index');
}

UpdateClinicAddressFormRequest.php:

public function authorize()

{
$clinicId = $this->route('postUpdateAddress');

return Clinic::where('id', $clinicId)
->where('user_id', Auth::id())
->exists();
}

Show.blade.php

{!! Form::open(array('route' => array('postUpdateAddress', $clinic->id), 'role'=>'form')) !!}

{!! Form::close() !!}

If I dd($clinicId) within the authorize function, it returns null, so I think that's where the problem lies!

任何帮助为什么在提交时说“禁止”将不胜感激。

最佳答案

您收到禁止错误,因为表单请求的authorize() 方法返回false:

问题是这样的:$clinicId = $this->route('postUpdateAddress');

要访问表单请求中的路由参数值,您可以这样做:

$clinicId =\Route::input('id');//获取{id}的值

所以 authorize() 应该是这样的:

public function authorize()
{
$clinicId = \Route::input('id'); //or $this->route('id');

return Clinic::where('id', $clinicId)
->where('user_id', Auth::id())
->exists();
}

关于php - Laravel 5 表单请求验证返回禁止错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30878105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com