آفلاین
user-avatar

کار با دیتاتیبلز در لاراول

5 ماه پیش
توسط محسن مهری آپدیت شد
آفلاین
user-avatar
علی رحمانی ( 46 تجربه )
3 سال پیش

سلام کسی از دوستان با dataTables برای صفحه بندی داده ها کار کرده؟

بهترین پاسخ انتخاب شده توسط علی رحمانی
Extern
3 سال پیش

بهترین آموزش داکیومنت خود پکیج هست :
https://datatables.yajrabox.com/starter
ساده توضیح داده مرحله به مرجله جلو برید متوجه موضوع میشد
اما به طور کلی به این صورت کار می کنه شما یک روت را جهت نمایش اطلاعات در نظر میگیرید و یک روت دیگر را برای پردازش اطلاعات جدول
به عنوان مثال بعد از اضافه کردن فایل های مورد نیاز این پکیج به وب سایت و view مربوطه برای نمایش داده ها در controller مربوطه یک function جهت صفحه نمایش اطلاعات (مثل جدول لیست کاربران ) ایجاد می کنید:

    public function index() {
 return view('users.index'); 
}  

بعد یک function برای پردازش اطلاعات و ارسال اونها به جدولتون :

public function usersdata()  
{  
$model = User::get(); //get users  
return Datatables::of($model)->make(true);  
}  

حال در صفحه جدول یا همون view نمایش جدول لیست کاربران که ایجاد کرده بودید باید کد های مربوط به datatable رو قرار بدید :
مثلا اگر yield content@ دارید توی قسمت content اون view اضافه می کنید:

<table class="table table-bordered" id="users-table">  
<thead>  
<tr>  
<th>Id</th>  
<th>Name</th>  
<th>Email</th>  
<th>Created At</th>  
<th>Updated At</th>  
</tr>  
</thead>  
</table>  

و در قسمت js همون صفحه


$(function() {  
$('#users-table').DataTable({  
processing: true,  
serverSide: true,  
ajax: '{!! route('datatables.data') !!}',  
columns: [  
{ data: 'id', name: 'id' },  
{ data: 'name', name: 'name' },  
{ data: 'email', name: 'email' },  
{ data: 'created_at', name: 'created_at' },  
{ data: 'updated_at', name: 'updated_at' }  
]  
});  
});

دقت کنید که به جای

{!! route('datatables.data') !!}  

باید آدرس route که برای دریافت دیتا ساختید (usersdata ) در مثال بالا بدید.

باز مستندات رو مطالعه کنید بهتر متوجه میشید و موردی در قسمت خاصی داشتید اعلام بفرمایید

آفلاین
user-avatar
Extern ( 1218 تجربه )
3 سال پیش

درود.
شما مشکلتون توی کدام قسمت هست ؟
صفحه بندی رو بیشتر با توجه به تنظیمات در صفحه نمایش انجام میده (اگر از پکیج yajra/laravel-datatables استفاده می کنید) یعنی با تنظیم مقدار result تعیین میکنید در هر بار پردازش چه مقدار دیتا برگردونه

آفلاین
user-avatar
علی رحمانی ( 46 تجربه )
3 سال پیش

تو تعریف روت ها برای سرچ و نمایش اطلاعات مشکل دارم. آموزشی هست براش؟

آفلاین
user-avatar
Extern ( 1218 تجربه )
3 سال پیش

بهترین آموزش داکیومنت خود پکیج هست :
https://datatables.yajrabox.com/starter
ساده توضیح داده مرحله به مرجله جلو برید متوجه موضوع میشد
اما به طور کلی به این صورت کار می کنه شما یک روت را جهت نمایش اطلاعات در نظر میگیرید و یک روت دیگر را برای پردازش اطلاعات جدول
به عنوان مثال بعد از اضافه کردن فایل های مورد نیاز این پکیج به وب سایت و view مربوطه برای نمایش داده ها در controller مربوطه یک function جهت صفحه نمایش اطلاعات (مثل جدول لیست کاربران ) ایجاد می کنید:

    public function index() {
 return view('users.index'); 
}  

بعد یک function برای پردازش اطلاعات و ارسال اونها به جدولتون :

public function usersdata()  
{  
$model = User::get(); //get users  
return Datatables::of($model)->make(true);  
}  

حال در صفحه جدول یا همون view نمایش جدول لیست کاربران که ایجاد کرده بودید باید کد های مربوط به datatable رو قرار بدید :
مثلا اگر yield content@ دارید توی قسمت content اون view اضافه می کنید:

<table class="table table-bordered" id="users-table">  
<thead>  
<tr>  
<th>Id</th>  
<th>Name</th>  
<th>Email</th>  
<th>Created At</th>  
<th>Updated At</th>  
</tr>  
</thead>  
</table>  

و در قسمت js همون صفحه


$(function() {  
$('#users-table').DataTable({  
processing: true,  
serverSide: true,  
ajax: '{!! route('datatables.data') !!}',  
columns: [  
{ data: 'id', name: 'id' },  
{ data: 'name', name: 'name' },  
{ data: 'email', name: 'email' },  
{ data: 'created_at', name: 'created_at' },  
{ data: 'updated_at', name: 'updated_at' }  
]  
});  
});

دقت کنید که به جای

{!! route('datatables.data') !!}  

باید آدرس route که برای دریافت دیتا ساختید (usersdata ) در مثال بالا بدید.

باز مستندات رو مطالعه کنید بهتر متوجه میشید و موردی در قسمت خاصی داشتید اعلام بفرمایید

آفلاین
user-avatar
محسن مهری ( 24120 تجربه )
5 ماه پیش

@Extern @pishguy

سلام و خسته نباشید میخاستم یک بحث جدید بسازم که دیدم این هست گفتم پس بهتره همین رو اپدیت کنم
یه چند تا سوال (سوالهای خسته کننده :|) داشتم، گفتم چون شما تجربه دارید میتونید به من مبتدی کمک کنید

  1. اول اینکه فایلی به نام print.blade.php من پیدا نکردم ؟ اخر مجبور شدم برم توی فایل jquery.dataTables.min.js و اونجا متون انگلیسیش رو فارسی کنم و همچنین کلاسهایی که میخاستم به اون دو تا input,select اش نسبت بدم رو با jquery نسبت بدم، راه بهتری ندارین؟
  2. به نظرتون استفاده این کتابخونه از لحاظ امنیتی در آینده مشکل ساز نخواهد شد ؟؟یعنی امنیت رو نمیاره پایین؟(این سوال خیلی برام حیاتیه چون داده هایی که میخام باهاش نمایش بدم داده های اصلی و مالی پروژم هستند.)
    تشکر از توجهتون
برای ارسال پاسخ باید وارد سایت شوید