J'essaie d'utiliser Laravel 5.1 validation de demande de formulaire, pour autoriser si la demande provient du propriétaire. La validation est utilisée lorsque l'utilisateur essaie de mettre à jour une partie de la table clinics
via le show.blade.php
.
Mon installation jusqu'à présent:
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');
}
pdateClinicAddressFormRequest.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() !!}
Si je
dd($clinicId)
dans la fonction d'autorisation, elle renvoienull
, donc je pense que c'est là que réside le problème!
Toute aide pour laquelle, sur soumettre, dit "interdit" serait grandement appréciée.
Vous obtenez erreur interdite parce que la méthode de demande de formulaire authorize()
renvoie false:
Le problème est le suivant: $clinicId = $this->route('postUpdateAddress');
Pour accéder à une valeur de paramètre d'itinéraire dans les demandes de formulaire, vous pouvez procéder comme suit:
$clinicId = \Route::input('id'); //to get the value of {id}
donc authorize()
devrait ressembler à ceci:
public function authorize()
{
$clinicId = \Route::input('id'); //or $this->route('id');
return Clinic::where('id', $clinicId)
->where('user_id', Auth::id())
->exists();
}
J'ajoute cette confirmation de propriétaire à la méthode authorize () dans Request and work
public function authorize()
{
return \Auth::check();
}