๋์ผํ ํ์ด์ง์ ํ์ํด์ผํ๋ ๋ฐ์ดํฐ ํ ์ด๋ธ์ด 2 ๊ฐ ์์ต๋๋ค. ์ด๋ฏธ ์์ฒด ํ์ด์ง์์ ์ฌ์ฉ๋๊ณ ์์ง๋ง ๋์ ๋ณด๋ ํ์ด์ง์๋ ๋ ๋ค ํฌํจ๋์ด์ผํฉ๋๋ค.
๋ด๊ฐ ์ง๋ฉดํ๋ ๋ฌธ์ :
๋ด ์ง๋ฌธ :
๋ด ServiceProvider์์ :
public function boot()
{
View::composer(['dashboard', 'user.index'], function(\Illuminate\View\View $view){
$userTable = Datatables::getHtmlBuilder()
->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.username')])
->addColumn(['data' => 'name_en', 'name' => 'name_en', 'title' => trans('messages.name (english)')])
->addColumn(['data' => 'name_jp', 'name' => 'name_jp', 'title' => trans('messages.name (japanese)')])
->addColumn(['data' => 'phone_number', 'name' => 'phone_number', 'title' => trans('messages.phone number')])
->addColumn(['data' => 'extension', 'name' => 'extension', 'title' => trans('messages.extension')])
->addAction([])
->ajax(route('user_index_data'))
;
$view->with('userTable', $userTable);
});
View::composer(['dashboard', 'group.index'], function(\Illuminate\View\View $view) {
$groupTable = DataTables::getHtmlBuilder()
->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.group username')])
->addColumn(['data' => 'name', 'name' => 'name', 'title' => trans('messages.group name')])
->addColumn(['data' => 'users', 'name' => 'users', 'title' => trans('messages.active users')])
->addAction([])
->ajax(route('group_index_data'));
$view->with('groupTable', $groupTable);
});
}
dashboard.blade.php์์
@section('content')
<div class="row">
<div class="col-sm-6 col-xs-12">
{!! $userTable->table() !!}
{!! $userTable->scripts() !!}
</div>
</div>
<div class="row">
<div class="col-sm-6 col-xs-12">
{!! $groupTable->table() !!}
{!! $groupTable->scripts() !!}
</div>
</div>
<strong i="20">@endsection</strong>
๋๋ ์ฃผ์๋ฅผ ํํค ์น๊ณ ๊ทธ๊ฒ์ ์๋์ํค๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
๋ด ๋น๋๋ฅผ ๋ฑ๋กํฉ๋๋ค.
public function register()
{
$this->app->bind('datatables.html.userTable', function () {
return $this->app->make(Builder::class);
});
$this->app->bind('datatables.html.groupTable', function () {
return $this->app->make(Builder::class);
});
}
๊ทธ๋ฐ ๋ค์ ๋ถํ ๋ฐฉ๋ฒ ()์์ ๋น๋๋ฅผ ์ฌ์ฉํ๊ณ ํ ์ด๋ธ ์์ฑ 'id'๋ฅผ ์ค์ ํฉ๋๋ค.
public function boot()
{
View::composer(['dashboard', 'user.index'], function(\Illuminate\View\View $view){
$userTableBuilder = app('datatables.html.userTable');
$userTable = $userTableBuilder
->setTableAttribute('id', 'userTable')
->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.username')])
->addColumn(['data' => 'name_en', 'name' => 'name_en', 'title' => trans('messages.name (english)')])
->addColumn(['data' => 'name_jp', 'name' => 'name_jp', 'title' => trans('messages.name (japanese)')])
->addColumn(['data' => 'phone_number', 'name' => 'phone_number', 'title' => trans('messages.phone number')])
->addColumn(['data' => 'extension', 'name' => 'extension', 'title' => trans('messages.extension')])
->addAction([])
->ajax(route('user_index_data'))
;
$view->with('userTable', $userTable);
});
View::composer(['dashboard', 'group.index'], function(\Illuminate\View\View $view) {
$groupTableBuilder = app('datatables.html.groupTable');
$groupTable = $groupTableBuilder
->setTableAttribute('id', 'groupTable')
->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.group username')])
->addColumn(['data' => 'name', 'name' => 'name', 'title' => trans('messages.group name')])
->addColumn(['data' => 'users', 'name' => 'users', 'title' => trans('messages.active users')])
->addAction([])
->ajax(route('group_index_data'));
$view->with('groupTable', $groupTable);
});
}
์คํฌ๋ฆฐ ์ท :
๊ฒ์ ๋ฐ ์ ๋ ฌ์ด ์๋ํฉ๋๋ค.
@Mopster app('datatables.html')
์๋์์๋ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
public function boot()
{
View::composer(['dashboard', 'user.index'], function(\Illuminate\View\View $view){
$userTable = app('datatables.html')
->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.username')])
->addColumn(['data' => 'name_en', 'name' => 'name_en', 'title' => trans('messages.name (english)')])
->addColumn(['data' => 'name_jp', 'name' => 'name_jp', 'title' => trans('messages.name (japanese)')])
->addColumn(['data' => 'phone_number', 'name' => 'phone_number', 'title' => trans('messages.phone number')])
->addColumn(['data' => 'extension', 'name' => 'extension', 'title' => trans('messages.extension')])
->addAction([])
->ajax(route('user_index_data'))
;
$view->with('userTable', $userTable);
});
View::composer(['dashboard', 'group.index'], function(\Illuminate\View\View $view) {
$groupTable = app('datatables.html')
->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.group username')])
->addColumn(['data' => 'name', 'name' => 'name', 'title' => trans('messages.group name')])
->addColumn(['data' => 'users', 'name' => 'users', 'title' => trans('messages.active users')])
->addAction([])
->ajax(route('group_index_data'));
$view->with('groupTable', $groupTable);
});
}
Datatables::getHtmlBuilder()
ํ๋ฉด ํญ์ ๋จ์ผ ์ธ์คํด์ค๊ฐ ๋ฐํ๋๊ณ IoC์์ ํธ์ถํ๋ฉด ์ ์ธ์คํด์ค๊ฐ ์์ฑ๋ฉ๋๋ค.
@yajra ์ ๋ง! ๊ฐ์ฌ!