php - Extending EnitityType - constructor arguments not passing -
i have extended symfony\bridge\doctrine\form\type\entitytype following class
namespace main\form\type; use /* ... */ class extendedentitytype extends entitytype { /** * @param formbuilderinterface $builder * @param array $options */ public function buildform(formbuilderinterface $builder, array $options) { /* ... */ } /** * @param optionsresolver $resolver */ public function configureoptions(optionsresolver $resolver) { $resolver->setdefaults( [ 'invalid_message' => 'the selected entity not exist', ] ); } /** * @return string */ public function getparent() { return entitytype::class; }
then registred service
<services> <service id="main.type.extended_entity" class="main\form\type\extendedentitytype"> <tag name="form.type_extension" extended-type="symfony\component\form\extension\core\type\entitytype"/> <argument type="service" id="doctrine"/> </service> </services>
and got following error:
catchable fatal error: argument 1 passed symfony\\bridge\\doctrine\\form\\type\\doctrinetype::__construct() must implement interface doctrine\\common\\persistence\\managerregistry, none given, called in \/vagrant\/symfony3-micro\/vendor\/symfony\/symfony\/src\/symfony\/component\/form\/formregistry.php
clearly reason arguments not passed constructor of doctrinetype.
i tried overwrite constructor , inject entitymanager got same error - none arguments passed constructor. have make works?
working symfony3.
you're mixing 2 concepts here.
you're extending entitytype
means you're creating new custom form type, not making extension you're service mapping suggests.
these 2 separate concepts.
you should change service mapping tag form_extension
form_type
.
<services> <service id="main.type.extended_entity" class="main\form\type\extendedentitytype"> <tag name="form.type" /> <argument type="service" id="doctrine"/> </service> </services>
Comments
Post a Comment