Laravel-datatables: [7.0] HTML을 λ Œλ”λ§ν•˜μ§€ μ•ŠμŒ

에 λ§Œλ“  2017λ…„ 01μ›” 27일  Β·  18μ½”λ©˜νŠΈ  Β·  좜처: yajra/laravel-datatables

Laravel Datatables 7을 μ‚¬μš©ν•˜κ³  μžˆμ§€λ§Œ λ‚΄ ν…Œμ΄λΈ”μ΄ HTML μ½”λ“œλ₯Ό λ Œλ”λ§ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ΄μ „μ—λŠ” HTML을 λ Œλ”λ§ν–ˆμ§€λ§Œ μƒˆλ‘œμš΄ Laravel DataTablesλ₯Ό 6μ—μ„œ 7둜 μ—…λ°μ΄νŠΈν–ˆμ„ λ•Œ μ—΄μ˜ 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 λŒ“κΈ€

κ²°κ³ΌλŠ” 기본적으둜 v7μ—μ„œ μ΄μŠ€μΌ€μ΄ν”„λ©λ‹ˆλ‹€. 아직 λͺ¨λ“  μ£Όμš” λ³€κ²½ 사항을 λ¬Έμ„œν™”ν•˜μ§€λŠ” μ•Šμ•˜μ§€λ§Œ λ³€κ²½ λ‘œκ·Έκ°€ λͺ‡ 가지 λ‹¨μ„œλ₯Ό μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. 감사 ν•΄μš”!

μ„œλΉ„μŠ€ μ€‘μ΄μ§€λ§Œ λ™μΌν•œ 문제λ₯Ό μ–΄λ–»κ²Œ κ³ μΉ  수 μžˆμŠ΅λ‹ˆκΉŒ?

@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')λŠ” 그렇지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
"yajra/laravel-datatables-oracle"κ³Ό ν•¨κ»˜ laravel 5.5 μ‚¬μš©: "~8.0"

λ‚˜λΌ, rawColumnsλŠ” λ°°μ—΄ 인수λ₯Ό μ·¨ν•˜λ―€λ‘œ rawColumns(['column_with_html'])이어야 ν•©λ‹ˆλ‹€.

μ—΄μ—μ„œ 보기λ₯Ό λ Œλ”λ§ν•˜λ €λ©΄ λ‹€μŒμ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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

뷰와 ν•¨κ»˜ λ Œλ”λ§ν•˜κΈ° μœ„ν•΄ 열을 νŽΈμ§‘ν•˜λŠ” 경우 기본적으둜 λ·°κ°€ λΈ”λ ˆμ΄λ“œμ— μ˜ν•΄ μ™„μ „νžˆ μ΄μŠ€μΌ€μ΄ν”„λ˜λ―€λ‘œ λ‹€μ‹œ μ΄μŠ€μΌ€μ΄ν”„ν•  ν•„μš”κ°€ μ—†λ‹€κ³  κ°€μ •ν•  수 μ—†μŠ΅λ‹ˆκΉŒ? 보기둜 νŽΈμ§‘λœ 열은 action 열이 이미 μžˆλŠ” κ²ƒμ²˜λŸΌ (기본적으둜) μ›μ‹œλ‘œ μžλ™ 섀정될 수 μžˆμŠ΅λ‹ˆλ‹€(λ¬Έμ„œμ—μ„œλŠ” 이에 λŒ€ν•΄ μ–ΈκΈ‰ν•˜μ§€ μ•ŠμŒ).

λ‚˜λŠ” 같은 λ¬Έμ œκ°€ 있고 λ‚΄ μΉœκ΅¬λŠ” ->escapeColumns([])와 κ·Έ μž‘ν’ˆμ„ μΆ”κ°€ν•˜λΌκ³  λ‚˜μ—κ²Œ λ§ν–ˆλ‹€.

`if ($request->ajax()) {
$ajax = Datatables::of(Admin::query())->escapeColumns([])->make(true);
$ajaxλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
}

    $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 μ΄μŠ€μΌ€μ΄ν”„λ₯Ό μ μš©ν•˜κΈ° μœ„ν•΄ NO 열을 μ„€μ •ν•˜μ—¬ λͺ¨λ“  HTML μ΄μŠ€μΌ€μ΄ν”„λ₯Ό λΉ„ν™œμ„±ν™” ν•œ κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. 이것은 ν•œ 가지 문제λ₯Ό μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλŠ” 방법일 수 있으며, 그둜 인해 λ‹€λ₯Έ μƒν™©μ—μ„œ μœ„ν—˜ν•œ 상황에 λΉ μ§€κ²Œ λ©λ‹ˆλ‹€.


-> μ΄μŠ€μΌ€μ΄ν”„ μ—΄([])

이것은 λ‚˜λ₯Ό μœ„ν•΄ μ˜¬λ°”λ₯΄κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.

@judgejλ‹˜ 말씀 에 λ™μ˜ν•©λ‹ˆλ‹€. λͺ¨λ“  열을 μ΄μŠ€μΌ€μ΄ν”„ν•˜λŠ” μœ„ν—˜μ„ κ°μˆ˜ν•˜κ³  싢지 μ•Šμ§€λ§Œ μ›μ‹œλ‘œ λ§Œλ“€κ³  싢은 것은 μ ‘κ·Όμžμ΄λ©° $datatables->rawColumns(['full_link']); 둜 μ›μ‹œ κ²°κ³Όλ₯Ό μƒμ„±ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@yajra 이 λ¬Έμ„œλ₯Ό μ—…λ°μ΄νŠΈν•˜μ‹­μ‹œμ˜€

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

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰