-
Notifications
You must be signed in to change notification settings - Fork 7
Description
Hi there!
(J'ai traduit en français, voir plus bas)
I'm using your bundle, great project !
The preRemove event listener calls hasConnections without the second argument ($filters)
$this->getConnectionManager()->hasConnections($entity)
And this method calls validateFilters with an empty filter array:
$this->filterValidator->validateFilters($filters);
The validate filters requires the type field to be not blank and not null.
$filterConstraint = new Collection(array(
'type' => array(
new NotBlank(),
new NotNull(),
),
'depth' => new Type('integer'),
));
This filter is useful when creating connections I guess (and even then, if I just have one connection type for a given entity, I wouldn't need it), but it's not useful when fetching constraints.
Bon, en français...
Je pense que vous avez compris avec le code, quand je supprime un objet qui a une question, le Listener est appelé. Ce listener regarde s'il y a des connections pour les supprimer le cas échéant, ce qui est très bien.
Sauf que hasConnection valide le deuxième argument (qui est vide dans ce cas, et devient un tableau vide par défaut), et que le validateur demande à ce que le champ 'type' soit défini (NotBlank, NotNull).
C'est pratique de valider le champ type quand on crée une connection (et encore, si je n'ai qu'un seul type de connection entre deux types d'entités, je n'en aurais pas besoin, mais bon), par contre quand on veut voir s'il y a une connection entre deux objets, ce n'est pas forcément utile.
Et surtout, ça fait planter le Listener, et je ne peux pas supprimer mes objets ! :D
Je vais utiliser un fork du projet, et faire une PR. Mon choix va être d'enlever validateFilters de hasConnection, ainsi que de toutes les méthodes en lecture. Pour que le bundle soit encore plus flexible, on pourrait carrément enlever ce filtre qui n'apporte pas grand chose.
Ça va sans doute faire planter les tests, dites-moi si ça vous intéresse de voulez merger la PR si vous voulez que je m'en occupe (et dites-moi quelle est la stratégie que vous préférez).