我正在开发从EntityType继承的自定义表单类型,它具有一个必需的选项,该选项将在query_builder中使用。如何获得已解决的值?
class MealPlanType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'class' => MealPlanHotel::class,
'query_builder' => function(EntityRepository $er) use($resolver) {
return $er->createQueryBuilder('meals')
**// Need to get hotel passed in form builder here**
// ->where('meals.hotel = :hotel')->setParameter('hotel', $hotel)
->orderBy('meals.sortIndex', 'ASC');
},
]);
$resolver->setRequired(['hotel']);
}
public function getParent()
{
return EntityType::class;
}
}
答案 0 :(得分:0)
经过一番试验,我找到了解决该问题的方法:
class UserProfileSrializer(serializers.Serializer):
def __init__(self, *args, **kwargs):
self.user = kwargs.pop("user", None)
serializers.Serializer.__init__(self, *args, **kwargs)
boats = serializers.SlugRelatedField(many=True, source="boatmodel_set", slug_field="boat_name",
read_only=True)
articles = serializers.StringRelatedField(many=True, source="article_set", read_only=True)
comment = serializers.StringRelatedField(many=True, source="get_comments", read_only=True)
def get_boats(self, obj):
# access the boats like this
boats = obj.boats
boats_limited = ... # limit your boats here
return boats_limited
def get_articles(self, obj):
# access the articles like this
articles = obj.articles
articles_limited = ... # limit your articles here
return articles_limited
您需要将带有Options参数的函数发送到query_builder,选项将填充在函数内部。