psモジュールを開発して、商品の添付ファイルをカテゴリで分類し、フロントプロダクトページに表示させます。ハンドル<select>モジュールクラスのajaxを持つ値prestashop 1.6
添付でドラッグ可能なリストを使用して、カテゴリにドロップするとオプションタグに変わります。各カテゴリには、添付ファイルを削除するselectタグがあります。
添付ファイルと削除されたカテゴリを保存したいので、データをモジュールクラスに持っていくためにajaxを呼び出すと思っていましたが、私はajaxで新しいので、それに近づいています。
これは私が作った義和です:
(適切なの.tpl内)JSコードを:
<script>
$(".droptrue").droppable({
drop: function(event, ui) {
//add <option> tag when an attachment is dropped to category's select
$(event.target).append('<option value="' + ui.draggable.attr('id') + '" selected>'+ui.draggable.text()+'</option>');
//remove the <li> wich contained the attachment data
ui.draggable.fadeOut("slow").remove();
var val = $('#categoryAttachmentArr').val();
//var tab = val.split(',');
//for (var i=0; i < tab.length; i++)
//if (tab[i] == $(this).val())
// return false;
//create an array with the next format: 'id_category(1)'-'id_attachment(1)','id_category(2)'-'id_attachment(2)'[....]
//the comma will be the main character that will be splitted
$('#categoryAttachmentArr').val(val + ui.doppable.attr('id') + '-' + ui.draggable.attr('id') +',');
}
});
$('#submitAddProduct').click(function(e){
$.ajax({
type: 'POST',
url: baseDir + 'modules/adjuntos/classes/CategoryAttachment.php',
data: {
ajax: true,
action: \'CategoryArray\',
cat_array: $('#categoryAttachmentArray').val(),
}
dataType: 'json',
success: function(json) {
console.log($('#categoryAttachmentArray').val());
}
});
})
$(".ui-state-default").draggable({
revert: "valid",
});
</script>
そして、私のクラス:
class CategoryAttachment extends Objectmodel
{
//other functions
public function ajaxProcessCategoryArray()
{
$CategoryAttachmentArr = Tools::getValue('cat_array')
}
}
おかげで、コードをよりスケーラブルにしますさ!だから、私は新しいコントローラを作成するか、単にこれを処理するために新しいPHPファイルを作成する必要があります。または、実際のadmincontroller(製品コントローラなど)を使用することもできます。 私に例を挙げてもらえますか? –
モジュールでカスタム(フロント/アドミニストレーター)コントローラを使用するか、ページ上の利用可能なフックを使用してajaxプロセスを処理できます。最初の方法が推奨されます。 –