Argument 2 passé App\Http\Controllers\ProfileController::store() doit être une instance de l'Application\Http\Demandes\CreateProfileRequest, aucune donnée
J'ai été en tirant sur mes cheveux avec cette erreur pour quelques heures maintenant, mais ne peut pas comprendre pourquoi il le fait. Je l'ai fait avant sur Laravel, mais il juste ne semble pas vouloir travailler.
C'est la méthode que je suis en train de vous mettre au travail:
public function store($name, CreateProfileRequest $request)
{
$user = User::whereName($name)->first();
$house = new House();
$house->first_line_address = $request->get('first_line_address');
$house->city = $request->get('city');
$house->postcode = $request->get('postcode');
$user->house()->save($house);
return redirect('/');
}
C'est la forme que j'essaie d'obtenir les données à partir de:
{!! Form::model($user->house, ['route' => 'profile.store']) !!}
<div class ="form-group">
{!! Form::label('first_line_address', 'First line of address:') !!}
{!! Form::text('first_line_address', null, ['class' => 'form-control'])!!}
</div>
<div class ="form-group">
{!! Form::label('city', 'Town/City:') !!}
{!! Form::text('city', null, ['class' => 'form-control'])!!}
</div>
<div class ="form-group">
{!! Form::label('postcode', 'Postcode:') !!}
{!! Form::text('postcode', null, ['class' => 'form-control'])!!}
</div>
<div class ="form-group">
{!! Form::submit('Update Profile', ['class' => 'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
</div>
C'est bien jusqu'à ce que je tente de le stocker puis-je obtenir
Argument 2 passé App\Http\Controllers\ProfileController::store() doit être une instance de l'Application\Http\Demandes\CreateProfileRequest, aucune donnée
C'est mon itinéraire:
$router->resource('profile', 'ProfileController');
| OBTENIR|TÊTE | profil | profil.index | App\Http\Controllers\ProfileController@index
| |
| | GET|HEAD | profil/créer | profil.créer | App\Http\Controllers\ProfileController@créer
| |
| | POST | profil | profil.store | App\Http\Controllers\ProfileController@store
| |
| | GET|HEAD | profil/{profil} | profil.afficher | App\Http\Controllers\ProfileController@show
| |
| | GET|HEAD | profil/{profil}/modifier | profil.modifier | App\Http\Controllers\ProfileController@edit
| |
| | METTRE | profil/{profil} | profil.mise à jour | App\Http\Controllers\ProfileController@mise à jour
| |
| | PATCH | profil/{profil} | | App\Http\Controllers\ProfileController@mise à jour
| |
| | SUPPRIMER | profil/{profil} | profil.détruire | App\Http\Controllers\ProfileController@détruire
| |
Si quelqu'un pense de la façon de se débarrasser de cette ridicule erreur je serai éternellement reconnaissante 🙂
- Essayez d'inverser l'ordre des arguments:
store(CreateProfileRequest $request, $name)
- Merci! Inversé, mais a terminé avec Missing argument 2 pour App\Http\Controllers\ProfileController::store()
- Comment votre parcours ressemble?
- $router->ressources('profil', 'ProfileController');
- J'ai eu un problème similaire. Mais sur la modification de l'ordre de l'erreur de s'en alla. Pourquoi l'ordre de la matière?
Vous devez vous connecter pour publier un commentaire.
La
store()
méthode d'un contrôleur de ressources/route ne prend pas tout les paramètres de la route. Cela signifie que Laravel n'a rien à transmettre comme$name
argument. Je suppose que vous êtes de passage le nom de la demande de données elle-même. Si c'est le cas vous pouvez y accéder avec$request->input('name')
.De toute façon, vous devez supprimer
$name
à partir de la signature de la méthode:Si vous voulez un exemple de
Request
à la disposition de votre contrôleur méthode, il doit être le premier argument, suivie par d'autres arguments passés par URI. Inverser les méthodes.