2016-03-25 27 views
1

Bu yüzden laravel 5.2 kullanıyorum ve bir arama formu yapıyorum, birden fazla arama sorusu ve seçeneği var.Laravel (php) arama seçeneklerini kaydet

Kullanıcıları kaydetme ve arama sayfasını ziyaret ettiğinde formu otomatik olarak doldurma yolları ve hatta ziyaret ettikleri sırada otomatik arama yapma yollarını düşünmeye çalışırken kafamı kaydırmaya çalışıyorum.

Şimdiye kadar

biriktirdiğim düşündüm, metin alanlarındaki değişkenler ve oto dolgu olarak 's GET ama bu sadece onlar ben sonra neysem değil sayfasında olan süre sürer ayarı edilmiştir veritabanına ayrı alanlar olarak girer ve sayfadayken ve her bir alanı doldurduklarında arama yapar ve çekerler, ancak sonra otomatik olarak nasıl ararım?

Ya kullanıcı bir arama kaydedilmiş varsa, u = kullanıcı adı & p = posta kodu ve yol kurmak kontrol etmek URL ör aldığım olarak 1 dize olarak kaydedin yoktur ve onlar/arama ziyaret ederseniz aldıkları URL'ye kaydedilen dl + seçenekleri alın. (Bunun nasıl yapılacağı hakkında bir ipucu yoktur.)

Artık en zor kısmı ile birlikte, cinsiyetler gibi birden çok seçeneğe sahip olduğum alanlar sıraladım. Bunları nasıl otomatik doldurursun?

Aşağıda bunu birkaç yolu vardır

<?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

Kullanıcının URL'yi bir başkasına gönderebilmesini ve aynı arama sonuçlarını görmesini ister misiniz? Öyleyse, değişkenleri alıp bunları url sorgu dizesinde saklamak en iyi seçenek olacaktır. Değilse, oturum veya çerezlerdeki değişkenleri saklamaya ne dersiniz? – Jeemusu

cevap

0

sadece form için benim kodudur. En iyi yollar, modele adanmış ve verileri JSON nesnesi olarak kaydetmektedir.

Model.User has many Searches ilişkisi ile özel tablo oluşturabilirsiniz. Ve sadece nesneyi bu tabloya kaydedin.

JSMON JSON.->toJson() yöntemiyle serialize object yöntemini kullanabilir ve users tablosunda devam edebilirsiniz. Eğer nesne ile doğrudan çalışıyoruz Her iki durumda da

$table->json('options'); 

: Sadece json tip column ekleyin.

+0

Ah Bu tür bir şey için ne arayacağımı biliyor musun? php ve –

+0

@Unifx'e atıfta bulunduğunuz şey için yeni bir şey yaptığınızda, parametre aldığınızda muhtemelen bir 'object' yaratabilirsiniz. JSON yolu: nesneyi DB'ye kaydetmek için "serialize" edip "json object" olarak kaydedebilirsiniz. Sonra bu json nesnesi için DB'yi sorgulayabilir, 'unserialize'' ve her zamanki nesne olarak kullanabilirsiniz. PHP ve Laravel belgelerinde daha fazla öğrenmeniz gerekiyor. –

+0

Bilgi için teşekkürler, şimdi daha anlamlı hale getirir. :) –