Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
1323 Lượt xem

Hello everyone, it is possible to add 2 filters to the web portal similar to modulo(portal) --> portal_searchbar -> searchbar_filters. Do you know how I can add so that I filter through both filters? 

V14

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Yes, in Odoo 14 , it's absolutely possible to add multiple filters (like a dropdown for status + date range or category) to the Portal view using portal_searchbar . You'll just need to extend the controller and the template logic properly.

Extend Controller

Inherit and override the web.controllers.portal method serving your portal page:

from odoo import http

from odoo.http import request

from odoo.addons.portal.controllers.portal import CustomerPortal


class CustomPortal(CustomerPortal):


    @http.route(['/my/records'], type='http', auth="user", website=True)

    def portal_my_records(self, **kwargs):

        # Extract filters

        filter_state = kwargs.get('filter_state', 'all')

        filter_type = kwargs.get('filter_type', 'all')


        domain = []


        if filter_state != 'all':

            domain += [('state', '=', filter_state)]


        if filter_type != 'all':

            domain += [('type', '=', filter_type)]


        records = request.env['your.model'].sudo().search(domain)


        values = {

            'records': records,

            'filter_state': filter_state,

            'filter_type': filter_type,

            'searchbar_filters_state': {

                'all': 'All Status',

                'draft': 'Draft',

                'done': 'Done',

            },

            'searchbar_filters_type': {

                'all': 'All Types',

                'internal': 'Internal',

                'external': 'External',

            }

        }

        return request.render("your_module.portal_my_records_template", values)


Modify Portal Template:

In your portal_my_records_template.xml:

<t t-call="portal.portal_layout">

  <div class="o_portal_searchbar_form">

    <form method="get">

      <select name="filter_state">

        <t t-foreach="searchbar_filters_state.items()" t-as="filter">

          <option t-att-value="filter[0]" t-att-selected="filter[0] == filter_state and 'selected' or None">

            <t t-esc="filter[1]"/>

          </option>

        </t>

      </select>


      <select name="filter_type">

        <t t-foreach="searchbar_filters_type.items()" t-as="filter">

          <option t-att-value="filter[0]" t-att-selected="filter[0] == filter_type and 'selected' or None">

            <t t-esc="filter[1]"/>

          </option>

        </t>

      </select>


      <button type="submit">Filter</button>

    </form>

  </div>


  <!-- Your table showing the filtered records -->

</t>


i hope it is use full

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

Hi,


Refer to the following blog that explains how we can add the filter in the Odoo customer portal.


* https://www.cybrosys.com/blog/how-to-add-a-filter-option-in-odoo-18-website-portal


Hope it helps

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 5 24
2607
2
thg 2 24
2137
0
thg 4 23
1498
6
thg 2 23
18270
1
thg 11 22
4666