Как вы отлаживаете проблемы SugarCRM/узнаете, как работает SugarCRM?

Я пытаюсь переместить нашу компанию из SalesForce в SugarCRM, но я столкнулся с неприятной ошибкой (в момент добавления пользовательского поля в учетные записи все аккаунты перестают отображаться). Мы заплатили за поддержку от людей SugarCRM, но у них есть только техническая поддержка "навсегда", а затем - безрезультатная поддержка для версии с открытым исходным кодом (и мы избегаем проприетарного программного обеспечения, такого как чума). О, и я упомянул, что наш контракт Salesforce истекает в конце недели?

Итак, длинный рассказ, я застрял, отлаживая приложение SugarCRM. Я очень опытный программист, и у меня есть базовая компетенция PHP, но я даже не знаю, где пытаться решить эту проблему. Могут ли любые разработчики сахара рекомендовать какой-либо процесс для отладки Sugar? Есть ли там ресурсы, которые помогут мне понять, что делают разные файлы PHP, или как работает система Sugar в целом?

Как пример того, о чем я говорю: я понял, как получить сахар, чтобы печатать трассировки стека, и, следуя нескольким, я заметил шаблон со всеми проблемными линиями, включающими

$this->_tpl_vars
Мне бы хотелось попробовать и выяснить, почему этот вызов метода не работает, но я не знаю:

A), что предполагается _tpl_vars
B), где _tpl_vars определен
C) какой $this должен быть
D), где в рамках $this устанавливается set
и др.

Итак, если кто-нибудь может объяснить, как/где я начну находить ответы на эти вопросы, я был бы невероятно благодарен.

Ответы

Ответ 1

Хотя это не прекрасный ответ на мой вопрос, эта статья:

http://developers.sugarcrm.com/wordpress/2008/09/26/where-is-the-code-for-x/

помог немного. Кроме того, когда я смотрел дальше через официальные документы Sugar, я обнаружил, что в Руководстве для разработчиков содержится некоторое объяснение того, как работает Sugar (хотя, очевидно, это не так сфокусировано на том, как Sugar работает так, как фокусировался на том, как заставить Sugar делать новые вещи).

Надеюсь, что это поможет любому другому растущему Sugar devs.

Ответ 2

Я работал с SugarCRM пару лет назад, и хотя мне нравилось то, что я видел на поверхности, я в конечном итоге отказался от этого для нашего проекта из-за того, что вы сейчас испытываете. Внутренняя часть продукта печально недокументирована. Я предполагал написать кучу slick модулей для продукта, но ресурсов просто не существует. Вы будете тратить все свое время на копание кода, пролистывание сообщений на форуме и поиск примеров того, что вы пытаетесь выполнить. Не похоже, что все стало намного лучше.

Учитывая, что ваш опыт работы с PHP отличается от уровня гуру, и вы, несомненно, заняты множеством других задач и сроков, я думаю, вам стоит пересмотреть этот переход, если не слишком поздно, по крайней мере, пока вы не получите лучший уровень комфорта с сахаром. Если вы вынуждены переехать в Сахар из-за истечения срока действия контракта с Salesforce, я думаю, что у вас может быть серьезная изжога!

Ответ 3

Используйте Krumo, чтобы помочь. Это супер легко и лучше, чем var_dump или print_r.

Просто загрузите исходный код и добавьте его в свою собственную папку. Я использую папку custom/include.

Затем переопределите View или что вам нужно посмотреть. Включите путь к файлу файла class.krumo.php и krumo, к какому объекту вы хотите взглянуть:

Быстрый пример -

<?php
  require_once('include/MVC/View/views/view.detail.php');
  require_once('custom/include/krumo/class.krumo.php');
  class AccountsViewDetail extends ViewDetail {

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

    // Override the parent function "preDisplay" to add our own template
    function preDisplay(){
      krumo($this->bean);
      $metadataFile = $this->getMetaDataFile();
      $this->dv = new DetailView2();
      $this->dv->ss =&  $this->ss;
      $this->dv->setup($this->module, $this->bean, $metadataFile, 'custom/modules/Accounts/tpls/AccountsDetailView.tpl');
    }


  }
?>

Вы получите хороший объект на странице, которую вы можете развернуть.

enter image description here

Ответ 5

Вы также можете попробовать установить xdebug (расширение PHP) и выполнить код с совместимой IDE, такой как eclipse или Komodo.

URL-адрес указывает, к какому директорию модуля обращаются и какое действие/представление. В большинстве модулей есть папка "views". Если он отсутствует, он либо использует представление MVC по умолчанию в папке include в сочетании с макетом метаданных, либо использует классическую архитектуру вида: index.php(listview), DetailView.php и EditView.php и шаблоны.

За последние пару лет многое изменилось к лучшему, поэтому я не уверен, что первый ответ (Nack) по-прежнему имеет значение. Это все еще довольно грубо по краям, но новая структура Sugar - лучший друг хакера в PHP (действительно легко переопределить материал в удобном для обновления способом). Это здорово для компаний, у которых уже есть PHP-хакеры, и нужно лишь несколько улучшений. И найти доступные подрядчики PHP, чтобы помочь, не так сложно (отказ от ответственности: я один). Я считаю, что это отличный инструмент, если вы используете открытый исходный код, просто нужен базовый CRM и насчитываете менее 100 пользователей.

Ответ 6

tpl - файлы шаблонов smarty. Они используются при отображении данных на экране. Как я делаю свои процессы отладки, создаю много дампов var для ошибки lof или просто печатаю их на экране.

Также получите xdebug на сервере, это очень поможет вам. Sugar - платформа mvc, поэтому знайте, как это работает, и будет намного легче.

взгляните на некоторые фрагменты, опубликованные на сайте www.eontek.rs

Ответ 7

Если я столкнулся с той же проблемой, когда страница сведений об учетной записи не была отображена и дала 500 внутренних ошибок. Я проверил, что он не был создан TPL. Сначала я проверил разрешения на эту папку, в моем случае все они были установлены. Поэтому я взял резервную копию cache\modules\accounts\DetailView.tpl и вручную добавил поле, после чего все сработало. Каждый раз в режиме разработчика необходимо вручную скопировать этот файл. Это боль, но ответа пока нет. Я спросил об этом в форумах, Bug, Twitter, никакой помощи. Кстати, мы используем Sugar Professional.

Ответ 8

Я бы посоветовал убедиться, что это действительно ошибка кода, а не только пропущенная конфигурация. Вы добавляете это поле через Admin > Studio > Contacts > Fields или через SOAP API?

Используете ли вы последнюю версию Sugar?

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

Я сам испытываю боли устаревшей/отсутствующей документации. Удачи!

Ответ 9

$this - ссылка на текущий объект.

class Test {

    var $tmp;

    function __construct() {
        $this->tmp = 42;    
    }
}