Laravel-datatables: [7.0] لا يقدم HTML

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

أنا أستخدم Laravel Datatables 7 ، لكن الجدول الخاص بي لا يعرض كود HTML. كان يعرض HTML من قبل ، لكن عندما قمت بالتحديث إلى Laravel DataTables الجديد إلى 7 من 6 ، توقف عن تقديم HTML في العمود. http://prntscr.com/e11n84

هذا مع Laravel DataTables 6 - http://prntscr.com/e11ph0

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

    return Datatables::of($this->users->getForDataTable($request->get('status'), $request->get('trashed')))
        ->editColumn('confirmed', function ($user) {
            return $user->confirmed_label;
        })
        ->addColumn('roles', function ($user) {
            return $user->roles->count() ?
                implode('<br/>', $user->roles->pluck('name')->toArray()) :
                trans('labels.general.none');
        })
        ->addColumn('actions', function ($user) {
           return $user->action_buttons;
        })
        ->rawColumns(['actions', 'confirmed'])
        ->withTrashed()
        ->make(true);

ال 18 كومينتر

يتم تخطي النتائج افتراضيًا في الإصدار 7. لم يتم توثيق كل التغييرات الفاصلة حتى الآن ولكن يجب أن يوفر سجل التغيير بعض الأدلة. شكرا!

كيف يمكنني إصلاح نفس المشكلة ولكن في الخدمة؟

@ brian2694 استخدم الطريقة الجديدة ->rawColumns(['column_with_html']) .

لدي مشكلة مماثلة ، أي مثال على استخدام rawColumns؟

    return Datatables::of($this->users->getForDataTable($request->get('status'), $request->get('trashed')))
        ->editColumn('confirmed', function ($user) {
            return $user->confirmed_label;
        })
        ->addColumn('roles', function ($user) {
            return $user->roles->count() ?
                implode('<br/>', $user->roles->pluck('name')->toArray()) :
                trans('labels.general.none');
        })
        ->addColumn('actions', function ($user) {
           return $user->action_buttons;
        })
        ->rawColumns(['actions', 'confirmed'])
        ->withTrashed()
        ->make(true);

حسن!

ربما تسمح

->rawColumns(['*'])

؟

divdax ربما حاول استخدام ->escapeColumns([]) لتحقيق نفس النتيجة.

شكرا جزيلا لك هذا مفيد جدا

-> escapeColumns ([]) عملت معي. لم يفعل rawColumns ('column_with_html').
استخدام Laravel 5.5 مع "yajra / laravel-datatables-oracle": "~ 8.0"

Nara ، تأخذ rawColumns وسيطة مصفوفة ، لذا يجب أن تكون rawColumns (['column_with_html'])

إذا كنت ترغب في عرض طريقة عرض في عمود ، فيمكنك القيام بذلك:

  ->editColumn('action', function(User $u){
       return view('users.action-btns', ['id'=>$u->id])->render();
  })

إذا كنت أقوم بتحرير عمود لعرضه بطريقة عرض ، فلا يمكن الافتراض افتراضيًا أن العرض سيتم تجاوزه بالكامل بواسطة الشفرة ، وبالتالي لا تحتاج إلى الهروب مرة أخرى؟ يمكن تعيين العمود الذي تم تحريره باستخدام طريقة العرض تلقائيًا (افتراضيًا) ليكون خامًا ، تمامًا مثل العمود action بالفعل (على الرغم من أن المستندات لا تذكر ذلك).

لدي نفس المشكلة ، ويطلب مني صديقي إضافة -> escapeColumns ([]) ، وأعماله.

`إذا ($ request-> ajax ()) {
$ ajax = Datatables :: of (Admin :: query ()) -> escapeColumns ([]) -> make (true)؛
عودة أياكس دولار ؛
}

    $dataTable = $htmlBuilder
        ->addColumn(['data' => 'admin_id', 'name' => 'admin_id', 'class' => 'id-column', 'title' => 'Id', 'searchable' => false, 'render' => function () {
            $editUrl = route('backend.staff.edit', '');
            return "function(data,type,full,meta){ return '<a href=" . $editUrl . "/'+data+'>'+data+'</a>'; }";
        }])
        ->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('default.name'), 'class' => 'name-column', 'render' => function () {
            $editUrl = route('backend.staff.edit', '');
            return "function(data,type,full,meta){ return '<a href=" . $editUrl . "/'+full.admin_id+'>'+data+'</a>'; }";
        }])
        ->addColumn(['data' => 'ip_address', 'name' => 'ip_address', 'title' => trans('default.ip_address')])
        ->addColumn(['data' => 'last_login', 'name' => 'last_login', 'title' => trans('default.last_login'), 'class' => 'date-column', 'searchable' => false])
        ->addColumn(['data' => 'html_status', 'name' => 'html_status', 'title' => trans('default.status'), 'class' => 'status-column', 'searchable' => false])
        ->addAction(['data' => 'action_button', 'name' => 'action', 'title' => trans('default.action'), 'class' => 'actions-column'])`

tonihidayt هل تفهم ما يفعله escapeColumns([]) ؟ يبدو لي أنه عطل كل هروب HTML من خلال تعيين عدم وجود أعمدة لتطبيق هروب HTML. قد تكون هذه طريقة سهلة لإصلاح مشكلة واحدة ، والتي تقودك بعد ذلك إلى موقف خطير في ظروف أخرى.


-> escapeColumns ([])

هذا يعمل بشكل صحيح بالنسبة لي.

أنا أتفق مع judgej . لا أريد المخاطرة بالهروب من جميع الأعمدة ، لكن العمود الذي أرغب في جعله خام هو موصّل ولا ينتج عنه نتيجة أولية بـ $datatables->rawColumns(['full_link']);

yajra الرجاء تحديث هذه الوثائق

https://datatables.yajrabox.com/eloquent/add-edit-remove-column

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

القضايا ذات الصلة

baig772 picture baig772  ·  14تعليقات

marioene picture marioene  ·  22تعليقات

MahdiPishguy picture MahdiPishguy  ·  17تعليقات

jay-shah-rushiinfotech picture jay-shah-rushiinfotech  ·  19تعليقات

jayenn007 picture jayenn007  ·  21تعليقات