Symfony:Catchable Fatal Error: Object of class Closure could not be converted to string

Petit nouveau ! | 7 Messages

10 juil. 2016, 20:32

Bonjour tous,

j'ai ce probléme lorsque j'affiche le formulaire du création du groupe et j'arrive pas a avancer dans mon projet :
L'erreur;
Catchable Fatal Error: Object of class Closure could not be converted to string
500 Internal Server Error - ContextErrorException

Stack Trace
in vendor/symfony/symfony/src/Symfony/Component/Form/ChoiceList/Factory/DefaultChoiceListFactory.php at line 166 -
// If "choice_label" is set to false and "expanded" is true, the value false
// should be passed on to the "label" option of the checkboxes/radio buttons
$dynamicLabel = call_user_func($label, $choice, $key, $value);
$label = false === $dynamicLabel ? false : (string) $dynamicLabel;
}
$view = new ChoiceView
-Voilà mes formType:
Class GroupType

Code : Tout sélectionner

class GroupsType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('image', new ImagesType()) ->add('name_groups','text',array('required' => true, 'attr' => array('placeholder' => 'Nom du groupe'))) ->add('role', new RolesType()) ; }
-Class RoleType:

Code : Tout sélectionner

class RolesType extends AbstractType { /** * @param FormBuilderInterface $builder * @param array $options */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('groups', 'choice', array( 'choices' => array( 'class' => 'GroupsBundle:Roles', 'query_builder' => function(EntityRepository $er) { return $er->createQueryBuilder('r') ->orderBy('r.id', 'ASC'); }, 'required' => false, 'multiple' => false, 'expanded' => false, 'placeholder' => 'Choisir le role du votre groupe' ) ) ) ->add('permissions_role','entity',array( 'class' => 'GroupsBundle:Permissions', 'multiple' => true, 'expanded' => true, 'query_builder' => function(EntityRepository $er) { return $er->createQueryBuilder('u') ->orderBy('u.name_permissions', 'ASC'); }, 'required' => true ) ) ; }
En effet, que le groupe doit avoir obligatoirement un rôle et un rôle peut ou ne peut pas avoir un groupe.
Une permission peut ou ne peut pas avoir des rôles et un rôle peut avoir plusieurs ou un rôle.

Merci de résoudre le probléme mes amis ;(

Mammouth du PHP | 800 Messages

10 juil. 2016, 21:40

c'est pas plutôt (string) $dynamicLabel qui pose problème ?
apparemment, $dynamicLabel est un objet donc ne peut pas être transformé en chaine.

Petit nouveau ! | 7 Messages

11 juil. 2016, 00:28

c'est pas plutôt (string) $dynamicLabel qui pose problème ?
apparemment, $dynamicLabel est un objet donc ne peut pas être transformé en chaine.
Merci pour ta réponse mon ami, mais tu sais ou je corrige ça !
la variable "groups" du formulaire est de type "collection".

Merci encore

Petit nouveau ! | 7 Messages

11 juil. 2016, 14:59

j'ai essayé de corriger mon code et voilà la dernier version:

Code : Tout sélectionner

public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('groups', 'entity',array( 'class' => 'GroupsBundle:Roles', 'property' => 'name_role', 'required' => false, 'placeholder' => 'Choisir le role du votre groupe' ) ) ->add('permissions_role','entity',array( 'class' => 'GroupsBundle:Permissions', 'property' => 'name_permissions', 'multiple' => true, 'expanded' => true, 'required' => true ) ) ; }
Le formulaire est bien affiché avec les différents rôles et les permissions sauf que le serveur ne peut pas traité la requête (j'en sais pas pourquoi !!):
//l'erreur
The 127.0.0.1 page isn’t working
127.0.0.1 is currently unable to handle this request.
HTTP ERROR
Voilà le fichier log du mon serveur SF 2.7:

Code : Tout sélectionner

Dev.log [2016-07-12 00:23:49] doctrine.DEBUG: SELECT p0_.id_per AS id_per0, p0_.nom_permisions AS nom_permisions1 FROM permissions p0_ [] [] [2016-07-12 00:23:49] doctrine.DEBUG: SELECT r0_.id AS id0, r0_.nom_roles AS nom_roles1 FROM roles r0_ WHERE r0_.id IN (?) [["0"]] [] [2016-07-12 01:51:58] php.DEBUG: fsockopen(): unable to connect to 127.0.0.1:8000 (Connection refused) {"type":2,"file":"/home/syrine01/Desktop/Project_Console/ vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ServerCommand.php","line":59,"l evel":28928} [] // ici le probléme WARNING - Translation not found. Context: {"id":"Image","domain":"messages","locale":"fr"} WARNING - Translation not found. Context: {"id":"File","domain":"messages","locale":"fr"} WARNING - Translation not found. Context: {"id":"Name groups","domain":"messages","locale":"fr"} WARNING - Translation not found. Context: {"id":"Nom du groupe","domain":"messages","locale":"fr"} WARNING - Translation not found. Context: {"id":"Role","domain":"messages","locale":"fr"} WARNING - Translation not found. Context: {"id":"Groups","domain":"messages","locale":"fr"} WARNING - Translation not found. Context: {"id":"Choisir le role du votre groupe","domain":"messages","locale":"fr"} WARNING - Translation not found. Context: {"id":"Permissions role","domain":"messages","locale":"fr"} WARNING - Translation not found. INFO - Matched route "groups_new". Context: {"route_parameters":{"_controller":"MemberShipManagement\\GroupsBundle\\Controller\\ GroupsController::newAction","_route":"groups_new"},"request_uri":"http://127.0.0.1:8000/groups/new"} DEPRECATED - The Symfony\Component\Form\Extension\Csrf\CsrfProvider\ CsrfProviderAdapter class is deprecated since version 2.4 and will be removed in version 3.0. Use the Symfony\Component\Security\Csrf\CsrfTokenManager class instead. + INFO - Populated the TokenStorage with an anonymous Token. DEPRECATED - MemberShipManagement\GroupsBundle\Form\GroupsType: The FormTypeInterface::setDefaultOptions() method is deprecated since version 2.7 and will be removed in 3.0. Use configureOptions() instead. This method will be added to the FormTypeInterface with Symfony 3.0. + DEPRECATED - MemberShipManagement\GroupsBundle\Form\ImagesType: The FormTypeInterface::setDefaultOptions() method is deprecated since version 2.7 and will be removed in 3.0. Use configureOptions() instead. This method will be added to the FormTypeInterface with Symfony 3.0. + DEPRECATED - MemberShipManagement\GroupsBundle\Form\RolesType: The FormTypeInterface::setDefaultOptions() method is deprecated since version 2.7 and will be removed in 3.0. Use configureOptions() instead. This method will be added to the FormTypeInterface with Symfony 3.0. + DEPRECATED - The "property" option is deprecated since version 2.7 and will be removed in 3.0. Use "choice_label" instead.
Merci :)

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 13232 Messages

28 juil. 2016, 16:49

Je ne suis pas persuadé que la ligne d'output que tu nous montres soit la bonne. Il s'agit d'un message de type "DEBUG" qui ne devrait pas bloquer ton script.

Par contre, tu nous parles de plusieurs soucis j'ai l'impression.

Tu pourrais nous faire un résumé de ton soucis ACTUEL ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 9 Messages

07 déc. 2016, 10:57

Tu peux aussi mettre dans tes entités une méthode __toString afin de mettre ce que tu veux afficher.