Хотя, по крайней мере в теории, я все еще думаю, что поведение - это правильный подход, я не могу найти достаточный уровень документации об их реализации в Symfony 1.4.x, чтобы дать мне теплый и неясный вопрос о том, что это может быть выполняется без изжоги, если вообще. Даже глядя на собственную документацию Propel о поведении, я не вижу никакой ловушки до или после извлечения, чтобы вызвать действие, которое мне нужно предпринять.
В результате я выбрал свой запасной путь. Однако после некоторого отсеивания исходного кода я понял, что это не так сложно, как мне показалось. Каждый метод поиска проходит через метод doSelect()
модели BasePeer
, поэтому я просто переопределил его в настраиваемой модели Peer
:
static public function doSelect( Criteria $criteria, PropelPDO $con = null ) {
$all_widgets = parent::doSelect( $criteria, $con );
$widgets = array();
foreach ( $widgets as $i => $widget ) {
#if( authorized ) {
# array_push( $widgets, $widget );
#}
}
return $widgets;
}
Я еще не связал сервисный вызов для авторизации, но, похоже, он работает должным образом для изменения наборов результатов. Когда и если мне придется предоставить авторизацию для дополнительных экземпляров модели, мне придется пересмотреть поведение, чтобы остаться СУХИМЫМ, но, похоже, до этого этого будет достаточно.