2016-08-31 3 views
0

Итак, у меня есть веб-сайт, основанный на основе Laravel. У меня есть таблица и фильтр для таблицы для фильтрации элементов - http://prntscr.com/ccht0f.Фильтр таблицы Laravel

Когда я их фильтрую с помощью чего-либо, все работает хорошо, но когда я изменяю фильтрацию страниц с сеанса. http://prntscr.com/cchutt - http://prntscr.com/cchuyo. Похоже, разбиение на страницы уничтожает все сеансы.

Мой код:

public function filters(Request $request) 
{ 
    $filter_item_acquisition_forms = [null]; 
    $filter_collections = [null]; 
    $filter_origin_dates = [null]; 

    $order_by = request()->query('order_by', 'id'); 
    $dir = request()->query('dir', 'desc'); 

    $storage_items = StorageItem::with(
     'authorClassification', 
     'placeClassification', 
     'classificationValueOrigin', 
     'classificationValueOriginDate', 
     'classificationValueItemAcquisitionForm', 
     'classificationValueCollection', 
     'classificationValuesMaterials', 
     'classificationValuesTechnique', 
     'employeeClassificationsRestorers', 
     'userLastUpdatedBy.employeeClassification', 
     'userResponsibleUser.employeeClassification', 
     'attachments' 
    ); 

    $storage_items = $storage_items->id($request->filter_id) 
     ->acceptanceId($request->filter_acceptance_id) 
     ->acceptanceNumber($request->filter_acceptance_number) 
     ->acceptanceDate($request->filter_acceptance_date) 
     ->mainInventoryNumber($request->filter_main_inventory_number_from, $request->filter_main_inventory_number_to) 
     ->scientificInventoryNumber($request->filter_scientific_inventory_number) 
     ->imageInventoryNumber($request->filter_image_inventory_number) 
     ->itemCosts($request->filter_item_costs_from, $request->filter_item_costs_to) 
     ->originDate($request->filter_origin_date) 
     ->updatedAt($request->filter_updated_at_from, $request->filter_updated_at_to) 
     ->addingDate($request->filter_added_from, $request->filter_added_to) 
     ->itemAcquisitionForm($request->filter_item_acquisition_form) 
     ->collection($request->filter_collection) 
     ->employee($request->filter_employee) 
     ->isInExposition($request->filter_is_in_exposition) 
     ->isRestored($request->filter_is_restored) 
     ->haveAttachments($request->filter_have_attachments) 
     ->haveNotCosts($request->filter_have_not_costs) 
     ->searchInField($request->filter_search_in_field, $request->filter_word_or_phrase); 




    $storage_items = $storage_items->orderBy($order_by, $dir)->paginate(20); 

    foreach ($storage_items as $storage_item) { 
     if ($storage_item->classificationValueItemAcquisitionForm != null) { 
      $filter_item_acquisition_forms[$storage_item->classificationValueItemAcquisitionForm->id] = $storage_item->classificationValueItemAcquisitionForm->value; 
     } 

     if ($storage_item->classificationValueCollection != null) { 
      $filter_collections[$storage_item->classificationValueCollection->id] = $storage_item->classificationValueCollection->value; 
     } 

     if (!is_null($storage_item->classificationValueOriginDate)) { 
      $filter_origin_date[$storage_item->classificationValueOriginDate->id] = $storage_item->classificationValueOriginDate->value; 
     } 
    } 
    $request->flash(); 

    return view('panel.storage_items.filters')->with([ 
     'storage_items' => $storage_items, 
     'current_order_query' => compact('order_by', 'dir'), 
     'employees' => [null] + EmployeeClassification::lists('employee', 'id')->toArray(), 

     'filter_what_to_look_for' => [ 
      'storage-items' => trans('fields.storage_items'), 
      'storage-item-acceptances' => trans('fields.storage_items_acceptances'), 
      'archive-objects' => trans('fields.archive_objects'), 
      'archive-documents' => trans('fields.archive_documents'), 
      'archive-docs-acceptance-acts' => trans('fields.archive_documents_acceptance_acts') 
     ], 
     'filter_item_acquisition_forms' => $filter_item_acquisition_forms, 
     'filter_collections' => [null] + Classification::findOrFail(2)->classificationValues()->lists('value', 'id')->toArray(), 
     //'filter_collections' => $filter_collections, 
     'filter_origin_dates' => $filter_origin_dates, 
     'filter_search_in_field' => [ 
      trans('fields.storage_items') => [ 
       'item_name' => trans('fields.item_name'), 
       'author' => trans('fields.author'), 
       'about_the_author' => trans('fields.about_author'), 
       'item_description' => trans('fields.item_description'), 
       'content_description' => trans('fields.content_description'), 
       'item_history' => trans('fields.item_history'), 
       'branding_notes' => trans('fields.branding_notes'), 
       'damage_characteristics' => trans('fields.damage_characteristics'), 
       'published' => trans('fields.published'), 
       'exhibited' => trans('fields.exhibited'), 
       'inquiries' => trans('fields.inquiries') 
      ], 
      trans_choice('fields.attachments', 0) => [ 
       'attachment_name' => trans('fields.name'), 
       'attachment_description' => trans('fields.description') 
      ] 
     ] 
    ]); 
} 

ответ

0

Так я установил сам.

Решение: Я получил идентификатор коллекции по запросу и сохранил его в переменной.

$filter_collection = $request->filter_collection; 

Зачет переменная зрения

->with('filter_collection', $filter_collection) 

И изменил мою пагинацию передать идентификатор коллекции на следующую страницу

{{ $storage_items->appends(['filter_collection' => $filter_collection])->links() }} 
Смежные вопросы