2016-10-07 7 views
0

ID로 enum에서 문자열을 가져 오는 것과 관련된 문제가있었습니다.Yajra Datatable는 ID로 문자열을 얻습니다.

<script type="text/javascript"> 
$(document).ready(function(){ 
    var datatable = $('#datatable').DataTable(
    { 
     dom: "lrtip", 
     responsive: true, 
     processing: true, 
     serverSide: true, 
     bSortCellsTop: true, 
     ajax: { 
      url: "{{ route('driver.list') }}", 
      data: { '_token' : '{{csrf_token() }}'}, 
      type: 'POST', 
     }, 
     columns: [ 
     { data: 'first_name', name: 'first_name', className: 'text-center', }, 
     { data: 'last_name', name: 'last_name', className: 'text-center', 'visible': false, 
      'searchable': false, }, 
     { data: 'gender', name: 'gender', className: 'text-center', }, 
     { data: 'race', name: 'race', className: 'text-center', 'visible': false, 
      'searchable': false, }, 
     { data: 'email', name: 'email', className: 'text-center', }, 
     { data: 'mobile', name: 'mobile', className: 'text-center', }, 
     { data: 'nric', name: 'nric', className: 'text-center', }, 
     { data: 'date_of_birth', name: 'date_of_birth', className: 'text-center', 'visible': false, 
      'searchable': false, }, 
     { data: 'license', name: 'license', className: 'text-center', }, 
     { data: 'type', name: 'type', className: 'text-center', 'visible': false, 
      'searchable': false, }, 
     { data: 'action', name: 'action', className: 'text-center', orderable: false, searchable: false }, 
     ], 
     initComplete: function() { 
      this.api().columns().every(function() { 
       $('#datatable thead tr#filterRow th:not(:last-child)').each(function() { 
        var title = $('#datatable thead th').eq($(this).index()).text(); 
        $(this).html('<input type="text" class="col-md-12" placeholder="Search by '+title+'" />'); 
        if (title == "Gender") { 
         var select = $('<select>'); 
         var genderList = {!! json_encode($genderList) !!}; 
         for (var i = 0;i < genderList.length; i++) { 
          option = $('<option>',{ 
           value: i, 
           text: genderList[i], 
          }); 
          select.append(option); 
         } 
         $(this).html(select); 
        } 
       }); 
       $('select').select2({ 
        allowClear: true, 
       }); 
       $("#datatable thead input,#datatable thead select").on('keyup change', function() { 
        console.log($(this).val()); 
        datatable.column($(this).parent().index()).search(this.value).draw(); 
       }); 
      }); 
     } 
    }); 
}); 
</script> 

여기 내 열거 코드입니다 :

여기 내 데이터 테이블 코드의

<?php 

namespace App\Helpers\Enums; 

final class Gender { 
const MALE = 0; 
const FEMALE = 1; 
public static function getList() { 
    return [ 
     Gender::MALE, 
     Gender::FEMALE, 
    ]; 
} 

public static function getArray() { 
    $result = []; 
    foreach (self::getList() as $arr) { 
     $result[$arr] = self::getString($arr); 
    } 
    return $result; 
} 

public static function getString($val) { 
    switch ($val) { 
     case 0: 
      return "Male"; 
     case 1: 
      return "Female"; 
    } 
} 

} 

?> 

내가 ID로 열거에서 문자열을 먹고 싶어.

남성/여성을 선택할 때 데이터를 처리하지 못했습니다. 어떤 생각?

대신 변압기를 사용하지 않는 이유를 Yajra의 데이터 테이블 패키지를 사용하고, 그것은 프랙탈 잘 작동하는 경우

답변

0

여기를 참조 : https://datatables.yajrabox.com/eloquent/transformer

그런 다음 당신은 당신의 변압기에이 같은 작업을 수행 할 수 있습니다

public function transform(Driver $driver) 
{ 
    return [ 
     'gender' => $driver->gender == 0 ? 'Male' : 'Female' 
    ]; 
} 
+0

새로운 DriverTransformer 모델을 추가해야합니까? –

+0

예. 당신이 붙어있어 일부 예제 코드를 던질 수 있다면 알려주세요. – haakym

+1

해결되었습니다. 고마워. –

관련 문제