Laravel France

Passer un argument dans une ressource create

  • Avatar de Romain
    Membre depuis :
    31/12/2019
    Messages :
    7

    Bonjour,

    Je réalise un backoffice qui génére des fonds de carte. Sur ces fonds de carte on peut ajouter des points d'intéret.

    J'ai donc fait une ressource POI et je souhaite utiliser "create" pour ajouter un point d'intéret.
    Cependant , j'ai besoin de pouvoir passer en argument l'"Id" de la carte

    
     public function create($id)
        {
           $carte = Carte::find($id);
           return view('backoffice.poi.ajout_poi', compact('carte'));
    
        }
    
        
    J'ai également une route
    
         route('poi.create',$carte->id )
          
    J'ai le message d'erreur suivant : Too few arguments to function App\Http\Controllers\BoPoi::create(), 0 passed and exactly 1 expected Une idée ? Merci par avance
  • Avatar de KYoann
    Membre depuis :
    11/02/2019
    Messages :
    60

    Salut,

    La route est déclaré comment ?

    Est tu sur que ta variable $carte->id est valide dans la vue ou tu déclare le lien ?

    Personnellement, j'ai tendance à écrire mes routes comme ceci route('poi.create',['id' => $carte->id] )

  • Avatar de Romain
    Membre depuis :
    31/12/2019
    Messages :
    7

    La route est déclarée comme une ressource : Route::resource('admin/poi', 'BoPoi');

    $carte->id est valide( et vaut "5") et retourne : admin/poi/create?5

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2632

    Salut,

    Dans une ressource pour create on n'a pas d'argument parce que logiquement ça renvoie le formulaire de création. Et de façon aussi très logique ça ajoute la valeur comme un paramètre dans l'url. C'est pourquoi tu obtiens un erreur.

    Là si je comprends bien tu veux juste renvoyer ta ressource, donc la méthode adpatée est plutôt show. i tu n'as pas les idées bien claires concernant les ressources tu peux lire la documentation.

  • Avatar de KYoann
    Membre depuis :
    11/02/2019
    Messages :
    60

    Au pire, si on veux garder la logic d'avoir une ressource Create pour le renvoi d'une vue de Création, tu peu ajouter des parametres lors de la déclaration des routes resources

    Route::resource('admin/poi','BoPoi',['parameters' =>[
    'create' => 'id',
    ]]);
  • Avatar de Romain
    Membre depuis :
    31/12/2019
    Messages :
    7

    @Kyoann : J'aimais bien l'idée , mais ca ne change rien ça retourne toujours : admin/poi/create?5
    @Bestmomo : en fait , j'ai bien un formulaire creation, mais lorsque que le point est créé je dois l'associer a une carte. Dans mon form j'aivais prévu un hidden avec l'id de la carte parente.

    Merci de votre aide

    je pesne que je vais passer par un controleur classique. Merci

Vous ne pouvez pas répondre à ce sujet.