duanbenzan4050 2016-08-31 12:54
浏览 40
已采纳

Laravel表过滤器

So I have website based on Laravel framework. I have table and the filter for table to filter the items - http://prntscr.com/ccht0f.

When I filter them by anything all works good, but when I change the page filtering disapers from session. http://prntscr.com/cchutt - http://prntscr.com/cchuyo. Looks like pagination destroys all sessions.

My code:

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')
            ]
        ]
    ]);
}
  • 写回答

1条回答 默认 最新

  • dongxing2030 2016-09-01 07:24
    关注

    So I fixed it myself.

    Solution: I got the collection ID from request and stored it in variable.

    $filter_collection = $request->filter_collection;
    

    Passed variable to the view

    ->with('filter_collection', $filter_collection)
    

    And changed my pagination to pass collection ID to next page

    {{ $storage_items->appends(['filter_collection' => $filter_collection])->links() }}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效