製品を登録できる管理画面を作っています。
カテゴリーを選び、その選択されたカテゴリーに紐付いたスペック一覧を表示させたいと思っています。
カテゴリーはメイン・大・中・小とあり、プルダウンで親カテを選択するごとに、小カテが表示されます。
スペックは中、小カテに紐付いていて、スペックを持つカテゴリーを選択したらスペック一覧を出したいのですが、うまくいかないのでご教示お願いします。
javascript
1 //中カテ 2 $(".regist_product_cat03").on("change",function(event){ 3 event.preventDefault(); 4 var registconfBtn= $(".regist_product_cat03"); 5 var registBtn = registconfBtn.val(); 6 7 $.ajax({ 8 url:"/products/admins/regist", 9 data:{ 10 cat:registBtn 11 }, 12 dataType:"json", 13 type:"post", 14 }).done(function(data){ 15 $('.regist_product_cat04 option').remove();//小カテの値消す 16 $(".regist_product_cat04").css({"display" : "block"}); 17 18 var result = data.result;//カテゴリ 19 var spec = data.spec;//スペック 20 //カテゴリが存在したら次のプルダウン表示 21 if(result!==""){ 22 $.each(result, function(id, result){ 23 $('.regist_product_cat04').append($('<option>').text(result[1]).attr('value', result[0])); 24 }); 25 } 26 //カテゴリに紐付いたスペックが存在したら一覧表示 27 if(spec!==""){ 28 var spectable = "<table>"; 29 spectable += "<caption>スペック一覧</caption>"; 30 spectable += "<tbody>"; 31 spectable += "<tr><td>スペック名</td><td>スペック値</td><td></td></tr>"; 32 $.each(spec, function(id, spec){ 33 spectable += "<tr><td>"+spec[1]+"</td>"; 34 spectable += "<td><input type='text' name='specname'></td></tr>"; 35 spectable += "<td><input type='hidden' name='specid' value="+spec[0]+"></td></tr>"; 36 }); 37 spectable += "</tbody>"; 38 spectable +="</table>"; 39 } 40 41 var mesArea = $(".spec_area"); 42 mesArea.append(mesArea); 43 val = txtArea.val(""); 44 45 }).fail(function(data){ 46 alert("NG..."); 47 });//$.ajax 48 49 });
php
1if($this->request->is("ajax")){ 2 3 $cat=$this->request->data["cat"];//カテゴリ選択 4 5 //選択されたカテゴリに紐付くカテゴリ呼び出し 6 $category=$categories->find() 7 ->select(['id','name']) 8 ->where(['parent'=>$cat]) 9 ->order(['id'=>'ASC']) 10 ->contain('specs'); 11 foreach($category as $catgory_value){ 12 $spec=$catgory_value['specs'];//スペック 13 $sub_cate_id=$catgory_value->id;//カテゴリid 14 $sub_category=$catgory_value->name;//カテゴリname 15 $subcate[]=array($sub_cate_id,$sub_category); 16 } 17 foreach($spec as $cat_specs){ 18 $c_specs_name=$cat_specs->name; 19 $c_specs_id=$cat_specs->id; 20 $c_specs_info[]=array($c_specs_id,$c_specs_name); 21 } 22 23 //viewに返す 24 $this->set(["result"=>$subcate]); 25 $this->set(["spec"=>$c_specs_info]); 26 27 28 }
スペック一覧はjsのdataで受け取れているのですが、それを表示することができません。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/04 19:13