0
votes

Afficher la valeur de la liste déroulante et l'utiliser dans le contrôleur Laravel


J'ai une liste déroulante à mon avis:

public function search(Request $request) {
    $search = $request->get('search');
    $sort = $request->sort;

    dd($search, $sort);
    die;

    $result = $this -> model -> getSearch($search, $sort);

    $processData['processData'] = $result;

    return view('datatracking', $processData);

}

Je veux obtenir la valeur lorsque l'utilisateur choisit dans la liste déroulante, dans mon contrôleur, j'ai essayé:

$sort = $request->sort;

Mais quand je choisis dans la liste déroulante et que j'utilise dd ($ sort), cela renvoie null. Comment puis-je obtenir la valeur? Merci!

Mise à jour: voici mon contrôleur complet:

<form action="./sort" method="post">
        <div class="sort-dropdown">
            <select name="sort">
                <option value="">Sort</option>
                <option value="asc">Ascending</option>
                <option value="desc">Descending</option>
            </select>
        </div>
    </form>


4 commentaires

qu'avez-vous choisi ?? avez-vous essayé $sort = $request->get('sort'); ?


Je choisis Asc ou Desc pour afficher la valeur avec dd () mais il renvoie simplement null, j'utilise $ sort = $ request-> get ('sort'); avant. Après avoir recherché un article ici, j'ai changé mais je ne travaille pas trop


montrez votre contrôleur, et de plus pourquoi avez-vous eu ce point unique de fin dans votre action?


Parce que mon url est localhost / activiti / public / procinsttable . Si je n'ai pas ce point dans mon action, lorsque je recherche quelque chose, mon URL sera une erreur. Btw, j'ai mis à jour mon post qui a un contrôleur


5 Réponses :


0
votes

utilisez this et dd ($ array_name);

$array_name->sort = $request->sort;


1 commentaires

Encore une erreur. Il dit: "Création d'un objet par défaut à partir d'une valeur vide"



0
votes

Vous pouvez l'obtenir à partir du tableau

$request['sort'];


4 commentaires

désolé mais c'est toujours nul


Je pense que le problème réside dans votre action de forme.


<form action = "your route here" method = "GET"> {{csrf_field ()}} </form>


Je pense que ça va maintenant. Mon seul problème est maintenant l'URL. Après la recherche, mon url est: localhost / activiti / public / search? Search = process , je choisis asc sort et mon url devient: localhost / activiti / public / sort? Sort = asc . Il trie avec mes données complètes et non les données recherchées.



0
votes

Votre formulaire n'est pas soumis. Pour soumettre le formulaire, vous devez ajouter du javascript.

<form action="./sort" method="post" >
                    <div class="sort-dropdown">
                        <select name="sort"  onchange="this.form.submit()">
                            <option value="">Sort</option>
                            <option value="asc">Ascending</option>
                            <option value="desc">Descending</option>
                        </select>
                    </div>
                </form>


1 commentaires

c'est toujours nul :(



0
votes

Vous pouvez toujours profiter de onchange de javascript. Peut-être pimentez-le avec un boîtier d'interrupteur?

Routes / web.php

public function show(Request $request)
{
     switch ($request->sort)
     {
         case "asc":
         // Grab your records accordingly
         $variable = $x;
         break;

         case "desc":
         // Grab your records accordingly
         $variable = $y;
         break;

         default:
         // Set a default sort option
         $variable = $z;
         break;
     }

     return view('datatracking', $variable);  
}

Lame:

<form action="./sort" method="post">
    <!-- pass your csrf token --> 
    @csrf

    <div class="sort-dropdown input-group">

        <!-- note the use of the onchange --> 
        <select name="sort" id="sort" class="form-control" onchange="this.form.submit()">
            <option value="">Sort</option>
            <option value="asc">Ascending</option>
            <option value="desc">Descending</option>
        </select>

    </div>
</form>

Votre contrôleur:

Route::post('./sort', 'YourController@show')->name('sort-records');


2 commentaires

Je pense que ça va maintenant. Mon seul problème est maintenant l'URL. Après la recherche, mon url est: localhost / activiti / public / search? Search = process, je choisis asc sort et mon url devient: localhost / activiti / public / sort? Sort = asc. Il trie avec mes données complètes et non les données recherchées.


Lancez une autre question @Tomato et je serais heureux de l'étoffer avec vous! C'est une question distincte de celle d'origine.



0
votes
 <select name="sort" id="sort" class="form-control" >
        <option value="Sort">Sort</option>
        <option value="asc">Ascending</option>
        <option value="desc">Descending</option>
    </select>

1 commentaires

Veuillez ne pas publier uniquement le code comme réponse, mais également expliquer ce que fait votre code et comment il résout le problème de la question. Les réponses avec une explication sont généralement plus utiles et de meilleure qualité, et sont plus susceptibles d'attirer des votes positifs.