Как создать представление SugarCRM, которое объединяет 2 представления деталей

Я хотел бы расширить представление сведений о контакте, чтобы представление сведений о связанной учетной записи отображалось в том же представлении.

МОЙ инстинкт состоит в том, чтобы переопределить функцию отображения для представления сведений о контактах и ​​оттуда создать экземпляр сведений об учетных записях и прикрепить его вывод на экран.

Но я не знаю, есть ли стандартный способ сделать это.


person dkinzer    schedule 23.09.2011    source источник


Ответы (2)


Я узнал, что в следующей версии (6.3) будет способ создания вычисляемых полей, которые имеют доступ к полям связанного модуля.

Если это так, то одним из вариантов будет создание вычисляемых полей, которые ссылаются на поля учетной записи, а затем добавление панели в Contact DetailView с указанными полями учетной записи.

Тем не менее, моя первоначальная догадка оказалась вполне выполнимой и не такой хакерской, как я предполагал вначале:

<?php
  require_once('include/MVC/View/views/view.detail.php');

  class ContactsViewDetail extends ViewDetail {

    function ContactsViewDetail() {
      parent::ViewDetail();
    }

    function preDisplay(){
      parent::preDisplay();
      // Configuration to display All account info
      $this->dv2 = new DetailView2();
      $this->dv2->ss =& $this->dv->ss;
      $this->bean2 = new Account();
      $this->bean2->retrieve($this->bean->account_id);
      $accountMetadataFile = 'custom/modules/Accounts/metadata/detailviewdefs.php';
      $accountTemplate = 'custom/modules/Accounts/tpls/AccountsDetailView.tpl';
      $this->dv2->setup('Accounts', $this->bean2, $accountMetadataFile, $accountTemplate);
    }

    function display(){
      parent::display();

      // Display Accounts information.
      $this->dv2->process();
      echo $this->dv2->display();
    }
  }
?>

Вкратце

  1. Переопределить подробный вид.
  2. Добавьте новый дисплей в текущий вид.
  3. Добавьте новый компонент (модуль) в представление.
  4. Обработайте дисплей с помощью нового bean-компонента.
  5. Эхо дисплея.
person dkinzer    schedule 29.09.2011

Другим более простым вариантом может быть просто добавление поля iframe, которое загружает детализацию учетной записи внутри него. Не так красиво, но и намного меньше взлома.

person jmertic    schedule 27.09.2011