Laravel-datatables: لا يعمل Javascript الخاص بي عندما يستدعي بواسطة AddColumn على زر الحذف

تم إنشاؤها على ١٠ مايو ٢٠١٧  ·  11تعليقات  ·  مصدر: yajra/laravel-datatables

مهلا ، هل يمكن لشخص حل مشكلتي؟

أنا جديد في هذه الحزمة حتى أشعر بالحيرة
أحاول إضافة عمود مع إجراء مثل تحرير أو حذف مثل هذا

public function table()
    {
      $employee = employee::all();

        return Datatables::of($employee)
            ->addColumn('action', function ($employee) {
              return '<center><a href="/employee/'.$employee->id.'/edit" rel="tooltip" title="Edit" class="btn btn-warning btn-simple btn-xs"><i class="fa fa-pencil"></i></a><a href="/employee/'.$employee->id.'/delete" rel="tooltip" title="Delete" class="btn btn-danger btn-simple btn-xs delete" data-name="'.$employee->name.'"><i class="fa fa-trash"></i></a></center>';
            })
            ->addColumn('position', function ($employee) {
                return $employee->position->role;
            })
            ->rawColumns(['action','position'])
            ->make(true);
    }

يعمل بشكل جيد ولكن جافا سكريبت التي تحتوي على Sweet Alert على زر dlete لا تعمل ،

هنا بلدي جافا سكريبت

<script type="text/javascript">
    $('.delete').click(function(e) {
        e.preventDefault(); // Prevent the href from redirecting directly
        var linkURL = $(this).attr("href");
        var name = $(this).attr("data-name");
        warnBeforeRedirect(linkURL,name);
    });
    function warnBeforeRedirect(linkURL,name) {
        swal({
            title: "Are you sure?",
            text: "You will delete record with name = "+name+" !",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "Yes, delete it!",
            cancelButtonText: "No, cancel it!",
            closeOnConfirm: false,
            closeOnCancel: false
        },
        function(isConfirm){
            if (isConfirm) {
                console.log('done');
                swal("Deleted!", "Your record with name "+name+" has been deleted.", "success");
                window.location.href = linkURL;
            } else {
                swal("Cancelled", "Your record with name "+name+" is safe :)", "error");
            }
        });
    }
    </script>

ماذا علي أن أفعل؟ الرجاء مساعدتي في أسرع وقت ممكن!

question

التعليق الأكثر فائدة

تحتاج إلى إرفاق البرامج النصية على drawCallback من dataTables أو إرفاق الحدث في الحاوية باستخدام محدد العقدة المناسب. تحقق من المستندات الرسمية datatables.net للمواد ذات الصلة بـ js. شكر!

ال 11 كومينتر

مرة أخرى ، حصلت على مشكلة صغيرة مع عبارة IF

كيف يمكنني إضافة هذا الأمر في AddColumn؟

<strong i="7">@if</strong> ($employee->status=="Activate")
                    <a href="/employee/{{$employee->id}}/deactivate" class="btn btn-danger btn-xs" name="status">Deactivate</a>
<strong i="8">@elseif</strong> ($employee->status=="Deactivate")
                    <a href="/employee/{{$employee->id}}/activate" class="btn btn-success btn-xs" name="status">Activate</a>
<strong i="9">@endif</strong>

جرب مثل هذا

->addColumn('status', function ($employee) {
                return '<?php if ($employee->status=="Activate"){ ?>
                    <a href="/employee/{{$employee->id}}/deactivate" class="btn btn-danger btn-xs" name="status">Deactivate</a><?php } ?>';

لكن النتيجة مثل هذه تمامًا
capture

تحديث :
حل هذه المشكلة بنفسي لول ، لكن ## # 1st لا يزال المشكلة الرئيسية
باستخدام هذا الرمز 👍

public function table()
    {
      $employee = employee::all();

        return Datatables::of($employee)
            ->addColumn('action', function ($employee) {
              return '<center><a href="/employee/'.$employee->id.'/edit" rel="tooltip" title="Edit" class="btn btn-warning btn-simple btn-xs"><i class="fa fa-pencil"></i></a><a href="/employee/'.$employee->id.'/delete" rel="tooltip" title="Delete" class="btn btn-danger btn-simple btn-xs delete" data-name="'.$employee->name.'"><i class="fa fa-trash"></i></a></center>';
            })
            ->addColumn('position', function ($employee) {
                return $employee->position->role;
            })
            ->addColumn('status', function ($employee) {
              if ($employee->status=="Activate") {
                return '<a href="/employee/{{$employee->id}}/deactivate" class="btn btn-danger btn-xs" name="status">Deactivate</a>';
              }elseif ($employee->status=="Deactivate") {
                return '<a href="/employee/{{$employee->id}}/activate" class="btn btn-success btn-xs" name="status">Activate</a>';
              }
            })
            ->rawColumns(['action','position','status'])
            ->make(true);
    }

يرجى الاطلاع على المستندات: https://yajrabox.com/docs/laravel-datatables/7.0/add-column لبعض المرجع. شكر!

yajra لقد جربت هذا
مراقب ؛

""
جدول الوظيفة العامة ()
{
الموظف بالدولار = الموظف :: الكل () ؛

    return Datatables::of($employee)
        ->addColumn('intro', 'employee.action')
        ->addColumn('position', function ($employee) {
            return $employee->position->role;
        })
        ->addColumn('status', function ($employee) {
          if ($employee->status=="Activate") {
            return '<center><a href="/employee/'.$employee->id.'/deactivate" class="btn btn-danger btn-xs" name="status">Deactivate</a></center>';
          }elseif ($employee->status=="Deactivate") {
            return '<center><a href="/employee/'.$employee->id.'/activate" class="btn btn-success btn-xs" name="status">Activate</a></center>';
          }
        })
        ->rawColumns(['action','position','status'])
        ->make(true);
}

""

رأي ؛

{{$employee->id}}

لكن الحصول على خطأ ، لأن ->addColumn('intro', 'employee.action') لا يستيقظ بالنسبة لي

هذه رسالة الخطأ 👍

تم طلب معلمة غير معروفة "إجراء" للصف 0 ، العمود 5. لمزيد من المعلومات حول هذا الخطأ ، الرجاء مراجعة http://datatables.net/tn/4

أيه أفكار؟

عند استخدام العرض ، يتم إرسال السمات كمتغير خاص. يجب أن تبدو وجهة نظرك كما يلي:

ID: {{$id}}

--تعديل--
إذا كنت ترغب في الوصول إلى النموذج بأكمله ، فأنت بحاجة إلى استخدام الإغلاق.

->addColumn('intro', function($model) {
    return view('employee.action', compact('model')->render();
})

yajra allright ، هذا العمل. ولكن ما زالت جافا سكريبت لم تسميها.

حتى خاصية تلميح الأدوات لا تعمل

هذا ما تبدو عليه وجهة نظري 👍

Action.blade.php 👍

<a href="/employee/{{$id}}/edit" rel="tooltip" title="Edit" class="btn btn-warning btn-simple btn-xs"><i class="fa fa-pencil"></i></a>
<a href="/employee/{{$id}}/delete" rel="tooltip" title="Delete" class="btn btn-danger btn-simple btn-xs delete" data-name="{{$name}}"><i class="fa fa-trash"></i></a>

<script type="text/javascript">
    $('.delete').click(function(e) {
    e.preventDefault(); // Prevent the href from redirecting directly
    var linkURL = $(this).attr("href");
    var name = $(this).attr("data-name");
    warnBeforeRedirect(linkURL,name);
    });
     function warnBeforeRedirect(linkURL,name) {
       swal({
           title: "Are you sure?",
           text: "You will delete record with name = "+name+" !",
           type: "warning",
           showCancelButton: true,
           confirmButtonColor: "#DD6B55",
           confirmButtonText: "Yes, delete it!",
           cancelButtonText: "No, cancel it!",
           closeOnConfirm: false,
           closeOnCancel: false
         },
        function(isConfirm){
      if (isConfirm) {
        console.log('done');
        swal("Deleted!", "Your record with name "+name+" has been deleted.", "success");
        window.location.href = linkURL;
      } else {
          swal("Cancelled", "Your record with name "+name+" is safe :)", "error");
      }
    });
      }
</script>

تحتاج إلى إرفاق البرامج النصية على drawCallback من dataTables أو إرفاق الحدث في الحاوية باستخدام محدد العقدة المناسب. تحقق من المستندات الرسمية datatables.net للمواد ذات الصلة بـ js. شكر!

حسنًا ، شكرًا ، إنه يعمل تمامًا كما أريد. yajra.

أغلق

yajra هل تعلم لماذا لا تعمل هذه التلميحات؟

قبل استخدام الإضافات =

1

بعد استخدام البرنامج المساعد =

2

الدردشة باستخدام REL ، وليس فئة تلميحات الأدوات.

تحتاج أيضًا إلى إعادة تهيئة المكون الإضافي تلميح الأدوات في drawCallback مثل:

dataTable.on('draw.dt', function () {
        // fix bootstrap tooltip plugin.
        $('.tooltip.fade.top.in').hide();
        $('[data-toggle=tooltip]').tooltip({container: 'body'});
    });

عملها ، شكرا.

أنا باستخدام هذا. yajra

drawCallback : function( settings ) { $("[rel=tooltip]").tooltip(); }

شكرا ، كما حل مشكلتي.

drawCallback: function(settings){
            console.log(settings);
            $('.btnValidate').click(function(){
                var idAcara = $(this).data('acara');
                console.log(idAcara);

                swal({
                    title: "Acc Proposal?",
                    text: "Ketika sudah di ACC, tidak dapat dikembalikan kembali!",
                    icon: "warning",
                    buttons: true,
                    dangerMode: false,
                  })
                  .then((willDelete) => {
                    if (willDelete) {
                        $.ajax({
                            method: 'post',
                            url: "/accproposal",
                            data: {
                                id: idAcara,
                                _token: $('meta[name="csrf-token"]').attr('content')
                            }
                        })
                        .done(function(resp){
                            console.info("SUKSES");
                            console.info(resp);
                            swal("Telah di acc", {
                                icon: "success",
                            });

                            setTimeout(() => {
                                location.reload();
                            }, 2000);          
                        })
                        .fail(function(resp){
                            console.error(resp);
                            console.log("GAGAL UPDATE");
                        });

                    } else {
                      swal("Proses ACC proposal dibatalkan");
                    }
                  });
            });

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات