Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

controller :

  public function index($bilanId, $ancId)
  {
    $bilan = Bilan::find($bilanId);
    $anc = Anc::find($ancId);
    $criterespersos = $bilan->criterespersos;
  return view('criterespersos.index', compact('criterespersos', 'bilan', 'anc'));
  }

route :

Route::get('bilans/{id}/{anc}/criteresperso/add', 'CriterespersoController@index')->name('bilan.criteresperso.index');

une partie de la vue qui envoie la route :

<div class="card-block">
                    <form class="form-horizontal" method="post" action="{{ route('bilan.resultat.add', ['bilanId' => $bilan->id] )}}" name="formu">
                      {{ csrf_field() }}
                    <table class="table table-striped">
                      <thead>
                        <tr>
                          <th>Sexe</th>
                          <th>Poids</th>
                          <th></th>
                          <th>Anc</th>
                        </tr>
                      </thead>
                    <tbody class="text-primary">
                      <tr>
                        <td><input id="sexe" size="7" maxlenght="3" name="valsexe" value="{{ $bilan->sexe }}"></td>
                        <td><input size="7" maxlenght="3" name="valpoids" value="{{ $bilan->Poids_kg }}"></td>
                        <td><input type="hidden" size="2" maxlenght="3" id="activite" name="valactivite" value="{{ $bilan->activite_mobile }}"></td>
                        <td><input class="valeur" type="text" id="ancId" name="ancId" value="{{ $anc->id }}"></td>
                    </tr>
                  </table>
                </form>
                    <table class="table table-sm">
                      <tbody>
                        <tr>
                          <td><a id="troubles" type="submit" class="btn btn-outline-success" name="troubles" value="troubles " href="{{ route("bilan.trouble.index", $bilan->id) }}">Troubles</a></td>
                          <td>
                            <input class="btn btn-outline-primary" type="submit" value="Vos apports" onclick="ancperso()" />
                        </td>
                        <td><a type="submit" class="btn btn-outline-danger" name="critperso" href="{{ route("bilan.criteresperso.index", array($bilan->id, $anc->id)) }}">Vos critères</a></td>
                        </tr>
                    </tbody>
                  </table>

Ce que je veux

que {id} et {anc} se remplissent corectement en fonction de l'id de chacun

Ce que j'obtiens

dans la route, {id} se remplit correctement mais {anc} reste toujours à 1 alors qu'il est censé changer en fonction de value="{{ $anc->id }}
http://localhost:8000/bilans/182/1/criteresperso/add

J'ai passé l'après-midi à chercher sans succès.... si quelqu'un voit où se trouve mon erreur ?
Merci d'avance !

6 réponses


essaie

<a type="submit" class="btn btn-outline-danger" name="critperso" href="{{ route("bilan.criteresperso.index", ['id'=>$bilan->id, 'anc'=>$anc->id ]) }}">Vos critères</a>

Malheureusement ça ne change rien...

personne pour me débloquer ?

ça manque de précision, l'id Anc doit être statique depuis le backend ou dépend de ton formulaire et d'une entrée utilisateur ?

Si c'est le premier cas, alors la solution de @oghouz devrait fonctionner, si le problème subsiste, cela viens de ton backend qui récupère mal la donnée.

Si c'est le second cas, il te faut passer soit par un FORM soit par du js qui changera la cible de ton lien.

Salut,

Vérifie que le paramètre de route dans ton URL soit bien nommé id, sinon Laravel ne pourra pas faire le match.

Erreurs :
1- tu envois le formulaire par post mais tu cree une de type get donc forcement rien ne va marcher
2- tu met plusieurs bouttons de type "submit" dans ton formulaire pourtant le submit va toujour aller vers le
lien de l'attribut "action" du formulaire
3- met l'id du bilan dans un input hidden puis tu va le recuperer dans le controller
formulaire
4- explique clairement le fonctionnement de ton formulaire

<div class="card-block">
                    <form class="form-horizontal" method="post" action="{{ route('bilan.resultat.add' )}}" name="formu">
                      {{ csrf_field() }}
                      <input type="hidden" name="bilanId" value="{{ $bilan->id }}">
                    <table class="table table-striped">
                      <thead>
                        <tr>
                          <th>Sexe</th>
                          <th>Poids</th>
                          <th></th>
                          <th>Anc</th>
                        </tr>
                      </thead>
                    <tbody class="text-primary">
                      <tr>
                        <td><input id="sexe" size="7" maxlenght="3" name="valsexe" value="{{ $bilan->sexe }}"></td>
                        <td><input size="7" maxlenght="3" name="valpoids" value="{{ $bilan->Poids_kg }}"></td>
                        <td><input type="hidden" size="2" maxlenght="3" id="activite" name="valactivite" value="{{ $bilan->activite_mobile }}"></td>
                        <td><input class="valeur" type="text" id="ancId" name="ancId" value="{{ $anc->id }}"></td>
                    </tr>
                  </table>
                </form>
                    <table class="table table-sm">
                      <tbody>
                        <tr>

                        <!-- je ne pige pas pourquoi t'a jusqu'a 3 "submit" -->
                          <td><a id="troubles" type="submit" class="btn btn-outline-success" name="troubles" value="troubles " href="{{ route("bilan.trouble.index", $bilan->id) }}">Troubles</a></td>
                          <td>
                            <input class="btn btn-outline-primary" type="submit" value="Vos apports" onclick="ancperso()" />
                        </td>
                        <td><a type="submit" class="btn btn-outline-danger" name="critperso" href="{{ route("bilan.criteresperso.index", array($bilan->id, $anc->id)) }}">Vos critères</a></td>
                        </tr>
                    </tbody>
                  </table>

la route

//larvel 5.2+
Route::post('bilans/criteresperso/add', 'CriterespersoController@index')
->name('bilan.criteresperso.index');

le controller

 public function index(Request $request)
  {
    $bilan = Bilan::find($request->bilanId);
    $anc = Anc::find($request->ancId);
    $criterespersos = $bilan->criterespersos;
  return view('criterespersos.index', compact('criterespersos', 'bilan', 'anc'));
  }

notons que sur laravel on recupere les parametres envoyer par get ou par post facilement grace a la classe "REQUEST"