В suitecrm 7.8 я исследовал функциональность after_save
логического хука ( см. Ответ на этот вопрос ).
У меня была небольшая проблема, чтобы получить с согласованным шаблоном значение существующего поля из объекта SugarBean
в after_save_class_method
, реализованного для данного модуля в [suitecrm folder]/custom/modules/<module name>/<after save class name>.php
.
Я объясняю:
В AOS_Quotes
чтобы получить значение поля date_entered
мне пришлось сделать:
$date_entered = $bean->fetched_row['date_entered'];
Если бы я попытался $bean->date_entered
, свойство не существовало бы для объекта, в то время как другие свойства были бы полями, к которым можно напрямую получить доступ через этот шаблон.
В то время как в AOS_Products_Quotes
, если бы я попытался получить значение поля через свойства $bean->fetched_row[{field_name}]
, это не сработало бы, и мне пришлось бы получить поле, используя этот шаблон: $bean->{field_name}
.
Чтобы понять, что происходит, я поместил var_dump($bean)
в оба моих <after save class name>
, один относительно AOS_Quotes
и один относительно AOS_Products_Quotes
:
<code><?php
if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
class <after save class name>
{
function after_save_method($bean, $event, $arguments)
{
//logic
echo '<pre>';
var_dump($bean);
echo '
';
выход;
}
}
?>
В том, что касается AOS_Quotes, результат var_dump дает:
object(AOS_Quotes)#46 (141) {
...
["fetched_row"]=>
array(51) {
["id"]=>
string(36) "<some id>",
....
}
...
}
Это подтверждает, что свойство fetched_row
существует на объекте AOS_Quotes
. Я мог получить доступ к большинству полей с шаблоном $bean->{field_name}
, за исключением одного с именем date_entered
, (я предполагаю, что date_entered
не должен изменяться пользователем в ловушке after_save, поэтому не должен быть доступен как свойство )
В том, что касается «AOS_Products_Quotes», результат var_dump дает:
object(AOS_Products_Quotes)#428 (94) {
...
["fetched_row"]=>
bool(false)
...
}
подтверждает, что fetched_row
объекта AOS_Products_Quotes
.
не существует.
Интересно, каковы были правила и настройки для настройки доступности в объекте SugarBean:
в свойстве fetched_row
, содержащем <field_name>
в array()
;
Или иметь <field_name>
непосредственно в качестве свойства SugarBean?