2017-11-18 6 views
1

Ich möchte den folgenden Autocomplete-Code in meinen CakePHP-Code integrieren. Hauptsächlich möchte ich die Daten aus der Datenbank (Hersteller + Produkt zB: BMW X5) nicht aus dem Array availableTags im untenstehenden Code ziehen.So implementieren Sie Suchleiste Autocomplete in CakePHP

Ich bin kein Experte in CakePHP also wie kann ich das Array availableTags zu CakePHP Datenbankfunktion ersetzen?

Produkte Tabellenspalten: Id, product_name, Version, MANUFACTURER_ID, Kategorie-ID

Hersteller Tabellenspalten: ID, Hersteller

search.html

<!doctype html> 
    <html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <title>jQuery UI Autocomplete - Default functionality</title> 
     <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 


     <?php App::import('Controller','Products');App::import('Controller','Manufacturers'); 

<link rel="stylesheet" href="/resources/demos/style.css"> 
     <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
     <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
     <script> 
     $(function() { 
     var availableTags = [ 
      "ActionScript", 
      "AppleScript", 
      "Asp", 
      "BASIC", 
      "C", 
      "C++", 
      "Clojure", 
      "COBOL", 
      "ColdFusion", 
      "Erlang", 
      "Fortran", 
      "Groovy", 
      "Haskell", 
      "Java", 
      "JavaScript", 
      "Lisp", 
      "Perl", 
      "PHP", 
      "Python", 
      "Ruby", 
      "Scala", 
      "Scheme" 
     ]; 
     $("#tags").autocomplete({ 
      source: availableTags 
     }); 
     }); 
     </script> 
    </head> 
    <body> 

    <div class="ui-widget"> 
     <label for="tags">Tags: </label> 
     <input id="tags"> 
    </div> 

Produkte Controller

public function suggestion() { 
     $this->autoRender = false; 

     $query = $this->params['url']['term']; 

     $return_arr = array(); 
     $products = $this->Product->find('all', array('fields' => array('DISTINCT (Product.product_name) AS product_name'),'conditions' => array('Product.product_name LIKE' => $query.'%'))); 

     foreach($products as $product) { 
      $return_arr[] = $product['Product']['product_name']; 
     } 


     echo json_encode($return_arr); 

    }?> 

Hersteller Controller

public function suggestion() { 
      $this->autoRender = false; 

      $query = $this->params['url']['term']; 

      $return_arr = array(); 
      $manufacturers = $this->Manufacturer->find('all', array('fields' => array('Manufacturer.manufacturer'),'conditions' => array('Manufacturer.manufacturer LIKE' => $query.'%'))); 

      foreach($manufacturers as $manufacturer) { 
       $return_arr[] = $manufacturer['Manufacturer']['manufacturer']; 
      } 


      echo json_encode($return_arr); 

     }?> 

Antwort

0

Sie können Hersteller Tabelle mit Produkten Tabelle dann in Produkte Controller binden, wenn Sie Produkte holen können Sie virtuelle Felder verwenden, um Werte zu kombinieren

+0

Ok können Sie mir bitte Felder in beiden Tabellen wissen lassen? –

Verwandte Themen