1
votes

Obtenir le nom et la valeur de l'option sélectionnée dans laravel

J'utilise foreach pour afficher l'option de la base de données, qui a une valeur comme celle-ci:

$loc = $request->location;
$i = 0;
foreach ($loc as $value) {

  if ($value == true) {
   $date_opt[] = [
     "id" => $value,
   ];
  }
  $i++;
}
return $date_opt;

Je veux passer à la fois le {{ $ key-> name}} et {{$ key-> id}} à mon contrôleur pour obtenir une réponse comme celle-ci {'name': 'city', ' id ':' 2 '} .

Pour l'instant, je n'utilise que la manière courante de transmettre le {{$ key-> id}} au contrôleur en utilisant cette méthode:

<select name="location[]" data-placeholder="Search Location" multiple class="chosen-select">
   <?php foreach ($location as $key): ?>
     <option value=""></option>
     <option value="{{$key->id}}">{{$key->name}}</option>
   <?php endforeach; ?>
</select>

Mais je ne sais pas comment passer le {{$ key-> name}} .

Dois-je mettre le {{$ key-> name}} dans une autre table ou y a-t-il un moyen possible de le faire?


1 commentaires

essayez ceci


3 Réponses :


2
votes

Il est probablement préférable en pratique générale de ne pas envoyer ces informations, puis de les enregistrer en fonction du nom fourni via la sélection, mais plutôt d'envoyer simplement l ' id et puis avoir des relations qui peuvent extraire le nom ou / et stocker le nom directement dans cette table en obtenant la relation sur la méthode POST et en enregistrant le nom directement à partir de la base de données, si cela a du sens.

Mais si, pour une raison quelconque, vous avez besoin de stocker le nom dans la requête, voici quelques moyens de le faire.

Vous pourriez envisager d'utiliser des tableaux pour aller quelque part, mais je ne suis pas sûr que cela est ce que vous recherchez

$parts = explode(':', $value);
$id = $parts[0];
$name = $parts[1];

Je devrais vérifier mais je ne sais pas si vous en avez besoin si vous pourrez faire quelque chose comme:

<option value="{{ $key->id }}:{{ $key->name }}" />

Mais pas sûr que cela sortira d'une manière très utilisable dans votre contrôleur, une autre façon de faire cela

<option value="[{{ $key->id }}, {{ $key->name }}]" />

Puis dans votre contrôleur exploser la valeur par le : , ce qui serait probablement facile ier dans ce cas.

<option value="location[{{ $key->id }}][{{ $key->name }}]" />


0 commentaires

0
votes

Placer le suivant dans le modèle:

$loc = $request->location;
$i = 0;
foreach ($loc as $value) {

   if ($value == true) {
     $data_arr = explode(',', $value);
     $date_opt[] = [
       "name" => $data_arr[0]
       "id" => $data_arr[1],
      ];
    }
   $i++;
  }
return $date_opt;

Placer le code suivant dans le contrôleur:

<select name="location[]" data-placeholder="Search Location" multiple class="chosen-select">
<?php foreach ($location as $key): ?>
   <option value=""></option>
   <option value="{{$key->name}},{{$key->id}}">{{$key->name}}</option>
<?php endforeach; ?>
</select>


1 commentaires

pouvez-vous print_r ($ value); sortir; et coller ici?



0
votes

Envoyez les deux données comme valeur:

$location = explode("-", $request->input('location'));

Dans le contrôleur, procédez comme suit

<option value="{{$key->id .'-'.$key->name }}">{{$key->name}}</option>

Ensuite, $ location [0] - contient l'ID, et $ location [1] contient NAME


0 commentaires