@qwelukasz: $er zostanie dodany jako argument funkcji przy wywołaniu, a Ty chcesz jeszcze dodać coś z zewnętrznego scope.
Bo tą funkcję anonimową to nie Ty będziesz wywoływał a jakiś form manager, który widząc że w parametrze query_builder dodałeś funkcję anonimową wywoła ją z parametrem $er, skąd od ma wiedzieć, że chcesz tam jeszcze $caravan?
@qwelukasz: trochę to słabe właśnie jest że funkcje anonimowe nie są bindowane przez symfony do np formy bo rozumiem że tam masz $caravan zdefiniowane @slave89: powinna ona być bindowana do forma, bo tam pewnie zdefiniował tego $caravana, a jeszcze lepiej by było gdyby można było ustawić w jakim scope ma być wołany jakiego typu obiektu i wtedy by robił metodę call
trochę to słabe właśnie jest że funkcje anonimowe nie są bindowane przez symfony do np formy bo rozumiem że tam masz $caravan zdefiniowane
@Jurigag: trochę to niewykonalne, bo tę f-cję anonimową wywołuje EntityType (konkretniej, DoctrineType), który nie ma dostępu do obiektu twojego forma. Zresztą nie widzę żadnego use-case na to, którego normalnie nie załatwia konstrukcja use.
Nie zapominaj że od php 5.4 $this jest automatycznie domyślnie bindowane do zewnętrznego scope czyli
Zamiast na mszę w niedziele to będziecie chodzili na koncerty black metalowe. W to nazywacie lepszą zmianą? Dla mnie kozak ( ͡°͜ʖ͡°) #bekazprawakow #bekazpisu #heheszki #polityka
mam pytanie o funkcje anonimowe
->add( 'weeks', 'entity', array(
'class' => 'MV\CaravanBundle\Entity\CaravanRow',
'property' => 'line',
'query_builder' => function(EntityRepository $er ) use ( $caravan ) {
return $er->createQueryBuilder('w')
->orderBy('w.dateFrom', 'ASC')
->where('w.caravan = ?1')
->andWhere('w.visible = 1')
->andWhere('w.booked = 0')
->setParameter(1, $caravan);
}
Czemu
$caravan
musi byc przekazane przezuse
a nie moze byc tak jak$er
? npfunction(EntityRepository $er, $caravan ) {..}
Bo tą funkcję anonimową to nie Ty będziesz wywoływał a jakiś form manager, który widząc że w parametrze query_builder dodałeś funkcję anonimową wywoła ją z parametrem $er, skąd od ma wiedzieć, że chcesz tam jeszcze $caravan?
@slave89: powinna ona być bindowana do forma, bo tam pewnie zdefiniował tego $caravana, a jeszcze lepiej by było gdyby można było ustawić w jakim scope ma być wołany jakiego typu obiektu i wtedy by robił metodę call
@Jurigag: trochę to niewykonalne, bo tę f-cję anonimową wywołuje EntityType (konkretniej, DoctrineType), który nie ma dostępu do obiektu twojego forma. Zresztą nie widzę żadnego use-case na to, którego normalnie nie załatwia konstrukcja use.
Nie zapominaj że od php 5.4 $this jest automatycznie domyślnie bindowane do zewnętrznego scope czyli