Вопрос по pdoField
Вопрос, в целом, Василию. С разбегу не нашел, как можно связаться приватно, прошу сильно не пинать:))
Итак, преамбула вопроса:
сниппет pdoField требует обязательного указания параметра id. А если он не указан, то берёт id текущего ресурса.
Всё замечательно, если речь идёт о классе modResource и его производных. Но вот тут указано, что с помощью этого сниппета можно получать поля любых объектов modx, указывая параметр class. Но любыми объектами могут оказаться и объекты, не имеющие поля id вовсе (наследники xPDOObject). Кроме того, могут быть ситуации, когда id объекта, даже если он и есть, не извсестен, а поиск объекта осуществляется по условию в параметре where.
Сам вопрос:
насколько необходимо в условие выборки включать $class.'.id' => $id?
Быть может, делать это только в том случае, если если параметр where пуст?
К сожалению, не имею аккаунта на гитхабе, поскольку все проекты веду на гитлабе. Поэтому не могу оформить pull request.
Не исключаю возможности, что я чего-то не доглядел и не учел какие-то варианты использования, поэтому прошу комментариев, прежде всего, Василия как автора дополнения.
В одном из своих проектов для корректной работы изменил сниппет так:
Заранее благодарю!
Итак, преамбула вопроса:
сниппет pdoField требует обязательного указания параметра id. А если он не указан, то берёт id текущего ресурса.
Всё замечательно, если речь идёт о классе modResource и его производных. Но вот тут указано, что с помощью этого сниппета можно получать поля любых объектов modx, указывая параметр class. Но любыми объектами могут оказаться и объекты, не имеющие поля id вовсе (наследники xPDOObject). Кроме того, могут быть ситуации, когда id объекта, даже если он и есть, не извсестен, а поиск объекта осуществляется по условию в параметре where.
Сам вопрос:
насколько необходимо в условие выборки включать $class.'.id' => $id?
Быть может, делать это только в том случае, если если параметр where пуст?
К сожалению, не имею аккаунта на гитхабе, поскольку все проекты веду на гитлабе. Поэтому не могу оформить pull request.
Не исключаю возможности, что я чего-то не доглядел и не учел какие-то варианты использования, поэтому прошу комментариев, прежде всего, Василия как автора дополнения.
В одном из своих проектов для корректной работы изменил сниппет так:
$where = array($class.'.id' => $id);
// Add custom parameters
foreach (array('where') as $v) {
if (!empty($scriptProperties[$v])) {
$tmp = $modx->fromJSON($scriptProperties[$v]);
if (is_array($tmp)) {
$$v = $tmp; //array_merge($$v, $tmp); - мои изменения, закомментировал слияние массивов, если есть пользовательское условие
}
}
unset($scriptProperties[$v]);
}
Вроде бы правильно работает и в других местах, где используются именно поля modResource. Заранее благодарю!