Zakładki (addony) definiuje programista i w takim addonie wyświetla rekordy, które spełniają odpowiednie kryteria. Patrz np moduł CRM/Contacts
, gdzie w widoku firmy masz wyświetlone kontakty. Podczas instalacji jest wykonywane
Utils_RecordBrowserCommon::new_addon('company', CRM_ContactsInstall::module_name(), 'company_addon', _M('Contacts'));
Co powoduje wyświetlanie funkcji CRM_Contacts::company_addon
:
public function company_addon($arg){
$rb = $this->init_module(Utils_RecordBrowser::module_name(),'contact','contact_addon');
... wycięte ...
$this->display_module($rb, array(array('(company_name'=>$arg['id'],'|related_companies'=>array($arg['id'])), array('company_name'=>false), array('last_name'=>'ASC','first_name'=>'ASC')), 'show_data');
...
gdzie w parametrze masz ustawione konkretne filtrowanie - $arg
to obecnie oglądany rekord firmy. Gdybym chciał to samo osiągnąć z kodu, aby pobrać te kontakty, które są przypisane do firmy mogę zrobić:
$records = Utils_RecordBrowserCommon::get_records('contact', array('(company_name'=>$arg['id'],'|related_companies'=>array($arg['id'])))
# --- albo z rboaccessor, bo contact nie ma swojej klasy rekordset ---
$rs = new RBO_RecordsetAccessor('contact');
$records = $rs->get_records(array('(company_name'=>$arg['id'],'|related_companies'=>array($arg['id'])));
RBO_RecordsetAccessor
pozwala na dostęp do danych rekordsetu w sposób nazwijmy to obiektowy.
Dostęp poprzez Utils_RecordbrowserCommon jest bardziej podstawowy i w RBO nie ma niczego, czego nie byłoby w Utils_RecordbrowserCommon.
Najważniejsze jest żeby Twój rekordset zawierał pole firmy do której dany item jest przypisany.
Mam nadzieję, że trochę wyjaśniłem.