2016-07-19 21 views
0

Ich habe zwei Tabellen categories und subcategories wo categories hasMany subcategories Beziehung.Aktualisieren Sie verwandte Liste mit Änderung in der Liste in CakePHP 3

Ich habe eine andere Tabelle products, die categories und subcategories verwandt ist.

In add Methode von products Ich möchte Kategorie aus der Liste und dann Unterkategorie mit bestimmten ausgewählten Kategorie auswählen.

echo $this->Form->input('category_id', ['options' => $categories, 'empty' => true]); 
echo $this->Form->input('subcategory_id', ['options' => $subcategories]); 
echo $this->Form->input('product_type_id', ['options' => $productTypes]); 
echo $this->Form->input('title'); 

Da es keine js Helfer in CakePHP 3. Wie könnte ich das mit Ajax machen?

Ich bin neu in CakePHP und Ajax. Und derzeit zeigen diese alle subcategories in der Liste.

Antwort

1

Ich bekomme es funktioniert so und es funktioniert gut.

View-Datei enthalten

<?= $this->Form->input('categories', ['options' => $categories, 'empty' => 'Select', 'id' => 'categories']) ?> 
<?= $this->Form->input('subcategory_id', ['type' => 'select', 'id' => 'subcategories]) ?> 

und myAjax.js Datei

$('#categories').change(function() { 
    var dataSet = {category_id: $(this).val()}; 
    var requestUrl = appBaseUrl+'products/ajax-subcategories'; 
    $.ajax({ 
     type: "POST", 
     url: requestUrl, 
     data: dataSet, 
     success: function(result) { 
      $('#subcategories').html(result); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      console.log(textStatus, errorThrown); 
     } 
    }); 
}); 

und ajaxSubcategories Aktion innerhalb ProductsController.php

public function ajaxSubcategories() 
{ 
    $this->autoRender = false; 
    $this->loadModel('Subcategories'); 
    $category_id = $this->request->data['category_id']; 

    $subcategories = $this->Subcategories->find() 
     ->where(['category_id' => $category_id, 'deleted' => false, 'status' => 0]); 

    $data = ''; 
    foreach($subcategories as $subcategory) { 
     $data .= '<option value="'.$subcategory->id.'">'.$subcategory->title.'</option>'; 
    } 
    echo $data; 
} 

Hoffnung enthalten diese jemand helfen könnte.