J'ai un formulaire basé sur les sélections pour une recherche avec des filtres (image ci-dessous). Lorsque j'ai appuyé sur le bouton de recherche, la page se recharge et réinitialise toutes les sélections.
J'essaie d'utiliser l'ancien assistant, mais cela ne fonctionne pas correctement, il prend juste la première option de la sélection (et il supprime l'option par défaut comme vous pouvez le voir dans les images ci-dessous)
Choses à savoir: c'est un formulaire avec une action get , il n'est pas destiné à stocker ou modifier quelque chose, uniquement pour la recherche. Alors, comment puis-je récupérer correctement les anciennes données lors de l'actualisation ou après avoir appuyé sur le bouton de recherche?
C'est ma première tentative et cela n'a pas fonctionné même chose pour celui-ci aussi. comme vous pouvez le voir sur cette image, cela supprime l'option par défaut et affiche la première option
3 Réponses :
La fonction old ()
obtiendra des données par clé spécifique à partir des données flash. Cela signifie que vous devez définir les données en tant que flash avant d'utiliser l'ancien ().
Source: https://laravel.com/docs/5.8/requests#old -entrée
Dans le cas, si vous souhaitez actualiser et conserver l'entrée, je suggère d'utiliser la méthode de gestion frontale: lorsque vous modifiez l'entrée de la liste déroulante, poussez le nouveau paramètre de chaîne de requête dans l'URL par javascript ( Comment puis-je ajouter ou mettre à jour un paramètre de chaîne de requête? < / a>). Jusqu'à ce que l'utilisateur tente d'actualiser la page, l'URL a conservé votre ancienne valeur. Dans la forme de la lame, vous pouvez utiliser la fonction pour obtenir le paramètre de la requête GET avec une priorité supérieure à la fonction old (), je ne me souviens pas vraiment de la fonction pour obtenir le paramètre à partir de l'URL, mais cela ressemblera à: p>
{{Request :: get ('yourInput') ?? old ('yourInput') ?? $ realEntity-> yourInput}}
Utilisez ce qui suit dans vos fichiers de lames. Vous pouvez vérifier si le nom existe dans l'url (chaîne de requête). J'espère que cela aidera :)
{{ Request::get('name') }}
Je pense que cette fonction old () devrait fonctionner correctement, mais vous devriez comparer la valeur de l'option dans foreach.
<select name="tipo_propiedad"> @foreach ($tipos_propiedades as $tipo_propiedad) <option value="{{$tipo_propiedad->id}}" @if($tipo_propiedad->id == old('tipo_propiedad') selected @endif(>{{$tipo_propiedad->name}}</option> @endforeach </select>