2015-06-16 13 views
11

Próbuję użyć sprawdzania poprawności formularza Laravel 5.1, aby autoryzować, jeśli żądanie pochodzi od właściciela. Sprawdzanie poprawności jest używane, gdy użytkownik próbuje zaktualizować część tabeli clinics za pośrednictwem .Laravel 5 żądanie sprawdzania poprawności żądania zwracania zabronionego błędu

My skonfigurować tak daleko:

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

Gdybym dd($clinicId) wewnątrz funkcji autoryzacji, zwraca null, więc myślę, że to, gdzie leży problem!

Każda pomoc w przesłaniu tego, co mówi "zabronione", byłaby ogromnie doceniana.

Odpowiedz

27

Otrzymujesz Zakazane błąd ponieważ authorize() metoda żądania formy wraca fałszywy:

Kwestia jest taka: $clinicId = $this->route('postUpdateAddress');

Aby uzyskać dostęp do wartości parametru trasa w formie kupna można to zrobić :

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

tak authorize() powinna wyglądać następująco:

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

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

Dziękuję bardzo za pomoc! Coś tak prostego. – Ben

+0

Witamy. Szczęśliwe kodowanie – Digitlimit

2

dodam to potwierdzenie właściciela do autoryzacji() metoda Zamówienie i pracować

public function authorize() 
{ 
    return \Auth::check(); 
} 
Powiązane problemy