2016-03-25 6 views
1

So benutze ich Laravel 5.2 und ich baue ein Suchformular, gibt es mehrere Suchanfragen und Optionen.Laravel (php) Speichern Suchoptionen

Ich habe mir den Kopf zerbrochen, indem ich mir überlegt habe, wie ich die Suchfunktion speichern und das Formular automatisch ausfüllen kann, wenn sie die Suchseite besucht ODER sogar automatisch sucht, wenn sie sie besucht.

Bisher habe ich Einstellung der GET die als Variablen und auto fill in den Textfeldern, aber das dauert nur für die Zeit, die sie auf der Seite sind, die nicht das, was i bin nach,

Ich habe gedacht, über das Speichern das geht in die Datenbank als separate Felder und wenn sie suchen und ziehen, wenn sie auf der Seite sind und jedes Feld ausfüllen, aber dann wie suche ich automatisch?

Oder speichere ich es als 1 Zeichenfolge als get aus der URL zB u = Benutzername & p = Postleitzahl und die Route einrichten zu überprüfen, ob der Benutzer eine Suche gespeichert hat und wenn sie/Suche besuchen sie bekommen Umgeleitet zu den URL + Optionen in der Datenbank gespeichert. (keine Ahnung, wie man das auch tut.)

Jetzt ist der schwierigste Teil sogar mit dem bekommt ich Felder, die mehrere auswählen wie Geschlechter und sortieren nach. Wie füllen Sie diese automatisch aus?

Unten ist mein Code nur für die Form

<?php 
if(isset($_GET['u'])) { $username = $_GET['u']; } else { $username = ''; } 
if(isset($_GET['p'])) { $postcode = $_GET['p']; } else { $postcode = ''; } 
if(isset($_GET['o'])) { $orderby = $_GET['o']; } else { $orderby  = ''; } 
?> 

{{ Form::open(['method' => 'GET']) }} 
<div id="filter-panel" class="filter-panel collapse in"> 
    <div class="panel panel-default"> 
     <div class="panel-body"> 

      <form class="form-inline" role="form"> 
       <div class="row"> 
        <div class="col-xs-6 col-sm-2"> 

         {{ Form::input('search', 'u', $username, ['class' => 'form-control input-sm', 'placeholder' => 'username...']) }} 
        </div><!-- form group [search] --> 

        <div class="col-xs-6 col-sm-2"> 

         {{ Form::input('search', 'p', $postcode, ['class' => 'form-control input-sm', 'placeholder' => 'postcode...']) }} 
        </div><!-- form group [search] --> 
        <div class="col-xs-6 col-sm-3"> 

        <select id="attractedToGender" multiple="multiple" name="g[]" class="input-sm" > 
         <option value="1">Females</option> 
         <option value="2">Males</option> 
         <option value="3">Others</option> 
        </select> 
        </div><!--END form-group col-xs-6 col-sm-4--> 
        <div class="col-xs-12 col-sm-3"> 
         <select id="pref-orderby" class="input-sm" name="o[]" multiple="multiple"> 
          <option value="1">Photo Only</option> 
          <option value="2">User Type</option> 
          <option value="3">Last Online</option> 
         </select>         
        </div> <!-- form group [order by] --> 
        <div class="col-xs-6 col-sm-2 pull-right text-right"> 
         {{Form::button('<i class="glyphicon glyphicon-search"></i> Search', array('type' => 'submit', 'class' => 'btn btn-primary btn-sm', 'style' => 'margin:0;'))}} 
        </div><!--END form-group col-xs-6--> 


       </div> 
      </form> 
     </div> 
    </div> 
</div>  
{{ Form::close() }} 
+0

Möchten Sie, dass der Benutzer die URL an eine andere Person senden kann, damit die gleichen Suchergebnisse angezeigt werden? Wenn dies der Fall wäre, wäre es am besten, get-Variablen zu verwenden und sie in der url-Abfragezeichenfolge zu speichern. Wenn nicht, wie wäre es mit dem Speichern der Variablen in der Sitzung oder Cookies? – Jeemusu

Antwort

0

Es gibt nur wenige Möglichkeiten, das zu tun. Am besten eignen sich dedizierte Modell- und Speicherdaten als JSON-Objekt.

Modell. Sie können eine dedizierte Tabelle mit User has many Searches Beziehung erstellen. Und speichern Sie einfach ein Objekt in dieser Tabelle.

JSON. Sie können serialize object mit ->toJson() Methode und in einer users Tabelle beibehalten. Fügen Sie einfach json Typ column:

$table->json('options'); 

In beiden Fällen Sie direkt mit dem Objekt arbeiten.

+0

Ah hättest du eine Idee, was ich für diese Art von Ding nachschlagen würde? Ich bin neu zu PHP und ein bisschen verloren, was Sie beziehen sich auf –

+0

@Unifx, wenn Sie Parameter erhalten, werden Sie wahrscheinlich ein "Objekt" erstellen. JSON-Weg: Um das Objekt in der Datenbank zu speichern, kann man es 'serialisieren' und als 'json object' speichern. Dann können Sie DB für dieses JSON-Objekt abfragen, 'unserialisieren' und als normales Objekt verwenden. Sie müssen mehr darüber in der PHP- und Laravel-Dokumentation erfahren. –

+0

Danke für die Info, macht jetzt viel mehr Sinn. :) –

Verwandte Themen