Estoy tratando de agregar una restricción con 2 parámetros en mi Symfony pero no tengo éxito. Mi código :
El campo de formulario que estoy tratando de verificar si está definido así:
->add( self::CUSTOMER_FAMILY_CUSTOMFIELD_FIELD_NAME, 'text', array( 'constraints' => array( new Constraints\Callback( array( 'methods' => array( array( $this, 'checkField' ) ) ) ) ), 'required' => true, 'empty_data' => false, 'label' => self::trans('Some number'), 'label_attr' => array( 'for' => 'customfield' ), 'mapped' => false, ) )No se preocupe por la variable en mayúscula, es la variable Thelia CMS que está bien definida.
Entonces mi función checkField si se define así:
public function checkField($field, ExecutionContextInterface $context) { if(strlen($field)!=0)$context->addViolation(self::trans('FIELD ERROR')}Esto está funcionando bien. Luego, me gustaría agregar un segundo parámetro en mi restricción, que es un objeto Thelia CMS ($ evento). Pero no encuentro cómo hacerlo con esta estructura de código.
Cualquier ayuda es bienvenida.
Como veo su problema, puedo ver estos posibles casos:
En este caso, puede configurar su objeto $event como un atributo de la clase que contiene su función checkField y usar su valor en la función.
En este caso, puede hacer lo mismo que antes y luego establecer su atributo $event en una devolución de llamada de evento de formulario, donde también redefinirá el campo para que se actualice en el evento de formulario deseado.