2015-06-16 2 views
11

Я пытаюсь использовать проверку запроса формы Laravel 5.1, чтобы разрешить, если запрос принадлежит владельцу. Проверка выполняется, когда пользователь пытается обновить часть таблицы clinics через show.blade.php.Laravel 5 форма запрос подтверждение возврат запрещенная ошибка

Мои настройки до сих пор:

routes.php:

Route::post('clinic/{id}', 
    array('as' => 'postUpdateAddress', 'uses' => '[email protected]')); 

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() !!} 

Если я dd($clinicId) в функции авторизовать, она возвращает null, так что я думаю, что это где проблема!

Любая помощь, почему на подаче это говорит «запрещено», была бы чрезвычайно оценена.

ответ

27

Вы получаете Forbidden Ошибка потому authorize() метод запроса формы возвращается ложь:

Вопрос заключается в следующем: $clinicId = $this->route('postUpdateAddress');

Для доступа к значению параметра маршрута в форму запросов вы можете сделать это :

$clinicId = \Route::input('id'); //to get the value of {id}

так authorize() должен выглядеть следующим образом:

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

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

Большое спасибо за вашу помощь! Что-то очень простое. – Ben

+0

Добро пожаловать. Счастливое кодирование – Digitlimit

2

добавить это подтверждение владельца для авторизации() в запросе и работать

public function authorize() 
{ 
    return \Auth::check(); 
} 
Смежные вопросы