Вопрос по pdoField

Вопрос, в целом, Василию. С разбегу не нашел, как можно связаться приватно, прошу сильно не пинать:))

Итак, преамбула вопроса:

сниппет 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.

Заранее благодарю!
Антон Фомичёв
13 мая 2015, 09:47
modx.pro
1 487
0

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0