Laravel: Kako da uhvatim ID iz polja pretrage ako je uneto vise parametara iz baze?

shone83

Zainteresovan član
Poruka
474
Imam index() funkciju gde sam izvukao par promenljivih koji idu ka index stranici gde ih koristim za neka select polja, i to je u formi gde ce posle iz te stranice ici u neku bazu.

I u tom controlleru imam ajaxData() funkciju gde sam pomocu ovog tutorijala napravio autocomplete search gde iz jednog reda baze izvacim vise parametara odvojenih spejsom.

Ono sto me muci je, kako da preko submita kad nadjem to preko autocomplete pretrage dobijem ID tog reda ili object. I to bi trebalo da bude u index() funkciji da bi tu promenljivu dalje postao u istu stranicu. Tamo cu dalje da pokupim ostala polja iz tog reda sto mi trebaju da bi iskoristio za tu novu tabelu. Nadam se da nisam bio konfuzan.

Controller:

Kod:
[COLOR=#333333]public function index()[/COLOR]
{
    $towns = Auth::user()->town->id;
    $town[$towns] = Auth::user()->town->name;

    $user = Auth::user()->id;

    $activist = Activist::where('town_id', Auth::user()->town_id)->pluck('name', 'id')->all();
    $cp = CP::where('town_id', Auth::user()->town_id)->pluck('name', 'id')->all();

    return view('members.index', compact('towns', 'user', 'activist', 'capillary'));
}

public function ajaxData(Request $request)
{
    $query = $request->get('query', '');

    $streets = Street::select('id', 'name')
      ->where('name', 'LIKE', '%'.$query.'%')
      ->get();

    $results = array();

    foreach($streets as $sn) {
        $street_numbers = StreetNumber::select('from', 'to')
          ->where('town_id', Auth::user()->town_id)
          ->where('street_id', $sn->id)
          ->get();

          foreach($street_numbers as $st) {
              $data = array(
                'name' => $sn->name." ".$st->from." ".$st->to
              );
              $results[] = $data;
          }
    }

    return response()->json($results); [COLOR=#333333]}[/COLOR]


Route:

Kod:
[COLOR=#333333]Route::resource('add', 'AddMembersController');[/COLOR]
[COLOR=#333333]Route::get('add-ajax',array('as'=>'autocomplete.ajax','uses'=>'AddMembersController@ajaxData'));[/COLOR]


View:

Kod:
[COLOR=#333333]<div class="row">[/COLOR]
    {!! Form::open(['route'=>'add.index', 'method'=>'GET']) !!}
        <div class="col-sm-12">
          <div class="panel panel-default">
              <div class="panel-heading">Претрага</div>
              <div class="panel-body">
                  <div class="input-group">
                      {!! Form::text('search_text', null, array('class' => 'form-control','id'=>'search_text')) !!}
                      <span class="input-group-btn">
                        {!! Form::button('<i class="fa fa-search"></i>', ['name'=> 'search_text', 'id'=>'get_cust_data', 'type' => 'button', 'class'=>'btn btn-default']) !!}
                      </span>
                  </div>
              </div>
          </div>
        </div>
    {!! Form::close() !!} [COLOR=#333333]</div>[/COLOR]


U principu kad bi dobio object iz ovoga samo bi u input polju na stranici uradio nesto ovako:

Kod:
[COLOR=#333333]<div class="col-sm-6">[/COLOR]
  <div class="form-group">
    {!! Form::label('street', 'Улица') !!}
    {!! Form::select('street', [$object? $object->street : null => $object? $object->street : null], null, ['class'=>'form-control', 'readonly']) !!}
  </div> [COLOR=#333333]</div>[/COLOR]

 
Trebala bi mi neka funkcija da raspakujem to i da posaljem promenljivu kao object u view.

Prvo sto treba da razjasnis sebi su dva pojma: serijalizacija i deserijalizacija.
Prvo je pretvaranje objekta koji nosi neke podatke u string odredjenog formata, a drugo je vice-versa.

Treba ti deserijalizator - funkcija koja serializuje string u objekat.
Konkretno, ti svojim asinhronim pozivom (AJAX-om) dovlacis kod sebe neke podatke.
Ti podaci su nista drugo nego string, koji je formatiran na jedan unapred definisan nacin, i taj format se zove JSON.
Ta funkcija treba da pretvori te tvoje podatke u objekte, i onda mozes sa objektima da radis sta hoces - ispitujes, testiras, menjas, i na kraju odredjeni sadrzaj objekta, koji zelis, prikazes u view.
Milsim da se u php-u koristi funkcija "json_decode", ali nemoj me drzati za rec, izguglaj, proveri.
I ne znam da li php podrzava dinamicke objekte, tako da ces mozda morati negde da definises prvo klase (objekte) gde ces smesitit deserijalizovane podatke.
 
Poslednja izmena:

Back
Top