Как вы отлаживаете проблемы SugarCRM / узнаете, как работает SugarCRM?
Вопрос
Я пытаюсь перевести нашу компанию с SalesForce на SugarCRM, но наткнулся на неприятную ошибку (в момент добавления настраиваемого поля в учетные записи все учетные записи перестают отображаться). Мы заплатили за поддержку от людей SugarCRM, но у них есть только техническая поддержка уровня «возьми-навсегда-тогда-ничего не стоишь» для версии с открытым исходным кодом (и мы избегаем проприетарного программного обеспечения, такого как чума). О, и я упоминал, что наш контракт с Salesforce истекает в конце недели?
Итак, короче говоря, я застрял в отладке приложения SugarCRM. Я достаточно опытный программист, и у меня есть базовые знания PHP, но я даже не знаю, где пытаться решить эту проблему. Могут ли разработчики Sugar порекомендовать какой-либо процесс отладки Sugar? Существуют ли какие-либо ресурсы, которые помогли бы мне понять, что делают различные файлы PHP, или как система Sugar работает в целом? Р>
Просто в качестве примера того, о чем я говорю: я выяснил, как заставить сахар печатать следы стеков, и, следуя нескольким, я заметил шаблон со всеми проблемными строками, включающими
<* > Я хотел бы попытаться выяснить, почему этот метод не работает, но я не знаю:
A) что _tpl_vars
должен делать
B) где _tpl_vars
определено
C) что $ this
должно быть
D) где в рамках $ this
устанавливается
и др. р>
Так что если кто-нибудь может помочь объяснить, как / где я начал бы находить ответы на эти вопросы, я был бы невероятно благодарен.
Решение 3
Хотя это не идеальный ответ на мой вопрос, эта статья:
http: // developers.sugarcrm.com/wordpress/2008/09/26/where-is-the-code-for-x/ р>
немного помог. Также, просматривая официальные документы Sugar, я обнаружил, что Руководство разработчика содержит некоторые пояснения о том, как работает Sugar (хотя, очевидно, оно не столько сфокусировано на том, как работает Sugar, сколько на том, как заставить Sugar делать новые вещи). р>
Надеюсь, это поможет любым другим развивающимся разработчикам Sugar.
Другие советы
Я работал с SugarCRM пару лет назад, и, хотя мне нравилось то, что я видел на поверхности, я отказался от этого для нашего проекта из-за того, что вы испытываете сейчас. Внутренние части продукта ужасно недокументированы. Я предполагал написать несколько полезных модулей для продукта, но ресурсов просто не существует. Вы проведете все свое время, копаясь в коде, просматривая посты на форуме и пытаясь найти примеры того, чего вы пытаетесь достичь. Не похоже, что все стало намного лучше.
Учитывая, что ваш опыт PHP ниже уровня гуру, и вы, несомненно, заняты многими другими задачами и сроками, я думаю, вам следует пересмотреть этот переход, если еще не слишком поздно, по крайней мере, пока вы не получите лучший уровень комфорта с сахаром. Если вы вынуждены переехать в Sugar из-за истекающего контракта с Salesforce, я думаю, у вас может быть серьезная изжога!
Используйте библиотеку Krumo , чтобы помочь. Это супер просто и намного лучше, чем var_dump
или print_r
.
Просто загрузите исходный код и добавьте его где-нибудь в своей пользовательской папке. Я использую папку custom / include.
Затем переопределите View или все, что вам нужно для просмотра. Укажите путь к файлу class.krumo.php и укажите любой объект, на который вы хотите взглянуть:
Быстрый пример -
<?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');
}
}
?>
На странице вы получите красивый объект, который вы можете развернуть.
Этот код поступает из Smarty lib, а не напрямую из SugarCRM.
Может быть, этот документ chm будет немного полезным, http://code.google .com / р / sugardoc / загрузки / список .
Вы также можете попробовать установить xdebug (расширение PHP) и пройти по коду с помощью совместимой IDE, такой как eclipse или Komodo. Р>
URL-адрес сообщает вам, к какому каталогу модуля осуществляется доступ и какое действие / просмотр. Есть " просмотры " папка под большинством модулей. Если его там нет, он либо использует представление MVC по умолчанию в папке include вместе с макетом метаданных, либо использует классическую архитектуру представления: index.php (listview), DetailView.php, EditView.php и шаблоны. Р>
За последние пару лет многое изменилось в лучшую сторону, поэтому я не уверен, что первый ответ (Nack) по-прежнему актуален. Это все еще довольно грубо по краям, но новая среда Sugar - лучший друг хакера PHP (действительно легко перезаписать вещи с помощью обновления). Это отлично подходит для компаний, у которых уже есть PHP-хакеры, которым нужно всего лишь несколько улучшений. И найти доступных подрядчиков PHP, чтобы помочь, не так сложно (отказ от ответственности: я один). Я думаю, что это отличный инструмент, если вы работаете с открытым исходным кодом, просто нуждаетесь в базовой CRM и имеете менее 100 пользователей. Р>
tpl - это умные файлы шаблонов. Они используются при отображении данных на экране. Как я делаю мой процесс отладки, создаю много var-дампов к ошибке lof или просто печатаю их на экране.
Также получите xdebug на сервере, это вам очень поможет. Sugar - это платформа mvc, так что узнайте, как это работает, и тогда будет намного проще.
взгляните на некоторые фрагменты, которые я публикую на www.eontek.rs
Если я столкнулся с той же проблемой, когда страница сведений об учетной записи не отображалась и выдает 500 внутренних ошибок. Я проверил, что это не было сгенерировано TPL. Сначала я проверил разрешения для этой папки, в моем случае все они были установлены. Поэтому я взял резервную копию cache / modules \ accounts \ DetailView.tpl и вручную добавил поле, после этого все заработало. Каждый раз в режиме разработчика необходимо вручную скопировать этот файл. Это боль, но ответа до сих пор нет. Я просил об этом на форумах, ошибок, Twitter, без помощи. Кстати, мы используем Sugar Professional.
Я бы посоветовал убедиться, что это действительно ошибка кода, а не просто ошибка конфигурации. Добавляете ли вы поле через Admin > Студия > Контакты > Поля или через SOAP API?
Вы используете последнюю версию Sugar?
Я действительно согласен, что этот проект ужасно недокументирован и не хватает учебников и примеров.
Я сам испытываю боль от устаревшей / отсутствующей документации. Удачи! Р>
$ this
является ссылкой на текущий объект. Р>
class Test {
var $tmp;
function __construct() {
$this->tmp = 42;
}
}