[symfony-users] Re: EntityChoiceField Issue with QueryBuilder params
You need to use the use option for the closure as the variable your trying to use isn't in the correct scope. See example 3 on this page: http://php.net/manual/en/functions.anonymous.php Your code will look like this: 'query_builder' = function($repository) use ($state_id) { return $repository-createQueryBuilder('cities')- where('cities.state_id = :state_id')-setParameter('state_id', $state_id); } On Feb 23, 1:19 am, Roger Webb webb.ro...@gmail.com wrote: Another interesting point to add. If I define(STATE_ID, $state_id) and pass that to the QueryBuilder setParameter method it works. On Feb 21, 3:12 pm, Roger Webb webb.ro...@gmail.com wrote: Greetings, Ran into an issue with the EntityChoiceField. I am rendering a SELECT field with city names. If I use a literal value (ie. 2) in the query_builder param of the EntityChoiceField everything works perfectly. If I substitute that with a variable value I get an empty select. Also, I have printed out the value of the state_id from the request and it prints the correct value. Any help would be appreciated. Roger Here is the code where I create the field. This is the code for the controller that is fetching the select field $params['city_select'] = $this-forward('UserBundle:Ajax:getCitySelectByStateId', array(), array('state_id' = 2))-getContent(); $params gets passed to the view This is the code from my AjaxController which should return these db driven fields on demand. public function getCitySelectByStateIdAction() { $em = $this-get('doctrine.orm.entity_manager'); $request = $this-get('request'); if(!$request-get('state_id')) return new Response('ERROR'); //NOT GETTING AN ERROR HERE $state_id = (int)$request-get('state_id'); $field = new EntityChoiceField($name, array( 'em' = $em, 'class' = 'ARN\EntityBundle\Entity\Cities', 'property' = 'city_name', 'query_builder' = function($repository) { return $repository-createQueryBuilder('cities')-where('cities.state_id = :state_id')-setParameter('state_id', $state_id); } )); return $this-render('UserBundle:Ajax:form_field.html.twig', array('field' = $field)); } -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups symfony users group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en
[symfony-users] Re: EntityChoiceField Issue with QueryBuilder params
This worked. Thanks. On Feb 22, 12:25 pm, Nathan Mudie nathan.mu...@gmail.com wrote: You need to use the use option for the closure as the variable your trying to use isn't in the correct scope. See example 3 on this page:http://php.net/manual/en/functions.anonymous.php Your code will look like this: 'query_builder' = function($repository) use ($state_id) { return $repository-createQueryBuilder('cities')- where('cities.state_id = :state_id')-setParameter('state_id', $state_id); } On Feb 23, 1:19 am, Roger Webb webb.ro...@gmail.com wrote: Another interesting point to add. If I define(STATE_ID, $state_id) and pass that to the QueryBuilder setParameter method it works. On Feb 21, 3:12 pm, Roger Webb webb.ro...@gmail.com wrote: Greetings, Ran into an issue with the EntityChoiceField. I am rendering a SELECT field with city names. If I use a literal value (ie. 2) in the query_builder param of the EntityChoiceField everything works perfectly. If I substitute that with a variable value I get an empty select. Also, I have printed out the value of the state_id from the request and it prints the correct value. Any help would be appreciated. Roger Here is the code where I create the field. This is the code for the controller that is fetching the select field $params['city_select'] = $this-forward('UserBundle:Ajax:getCitySelectByStateId', array(), array('state_id' = 2))-getContent(); $params gets passed to the view This is the code from my AjaxController which should return these db driven fields on demand. public function getCitySelectByStateIdAction() { $em = $this-get('doctrine.orm.entity_manager'); $request = $this-get('request'); if(!$request-get('state_id')) return new Response('ERROR'); //NOT GETTING AN ERROR HERE $state_id = (int)$request-get('state_id'); $field = new EntityChoiceField($name, array( 'em' = $em, 'class' = 'ARN\EntityBundle\Entity\Cities', 'property' = 'city_name', 'query_builder' = function($repository) { return $repository-createQueryBuilder('cities')-where('cities.state_id = :state_id')-setParameter('state_id', $state_id); } )); return $this-render('UserBundle:Ajax:form_field.html.twig', array('field' = $field)); } -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups symfony users group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en
[symfony-users] Re: EntityChoiceField Issue with QueryBuilder params
Another interesting point to add. If I define(STATE_ID, $state_id) and pass that to the QueryBuilder setParameter method it works. On Feb 21, 3:12 pm, Roger Webb webb.ro...@gmail.com wrote: Greetings, Ran into an issue with the EntityChoiceField. I am rendering a SELECT field with city names. If I use a literal value (ie. 2) in the query_builder param of the EntityChoiceField everything works perfectly. If I substitute that with a variable value I get an empty select. Also, I have printed out the value of the state_id from the request and it prints the correct value. Any help would be appreciated. Roger Here is the code where I create the field. This is the code for the controller that is fetching the select field $params['city_select'] = $this-forward('UserBundle:Ajax:getCitySelectByStateId', array(), array('state_id' = 2))-getContent(); $params gets passed to the view This is the code from my AjaxController which should return these db driven fields on demand. public function getCitySelectByStateIdAction() { $em = $this-get('doctrine.orm.entity_manager'); $request = $this-get('request'); if(!$request-get('state_id')) return new Response('ERROR'); //NOT GETTING AN ERROR HERE $state_id = (int)$request-get('state_id'); $field = new EntityChoiceField($name, array( 'em' = $em, 'class' = 'ARN\EntityBundle\Entity\Cities', 'property' = 'city_name', 'query_builder' = function($repository) { return $repository-createQueryBuilder('cities')-where('cities.state_id = :state_id')-setParameter('state_id', $state_id); } )); return $this-render('UserBundle:Ajax:form_field.html.twig', array('field' = $field)); } -- If you want to report a vulnerability issue on symfony, please send it to security at symfony-project.com You received this message because you are subscribed to the Google Groups symfony users group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en