2017-10-15 12 views
0

Essayez d'obtenir la valeur d'assertion définie dans l'entité dans la vue.Accès Symfony Assert dans la vue de brindille

utilisant: Symfony 2.8 Administrateur Sonata: 3.1

je définissais une assertion dans le modèle comme celui-ci:

/** 
* @var string 
* @Assert\Length(
*  min = 8, 
*  max = 60, 
*  minMessage = "Longer than {{ limit }}", 
*  maxMessage = "Shorter than {{ limit }}" 
*) 
* @ORM\Column(name="title", type="string", length=60) 
*/ 
private $title; 

Le formulaire d'administration utilisent un FormType personnalisé pour charger la vue personnalisée:

<?php  
namespace CustomBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\Extension\Core\Type\TextType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolver; 

class TextCountType extends AbstractType 
{ 

    public function getParent() 
    { 
     return TextType::class; 
    } 


} 

Et la vue:

{% block text_count_widget %} 
    {% spaceless %} 
     {{ block('form_widget_simple') }} 
     <script> 
     // some custom live validation 
     // HERE i need access to the Asserts 
    </script> 

    {% endspaceless %} 
{% endblock %} 

Ma question est: Existe-t-il un moyen d'accéder aux asserts dans le code twig? Je ne veux pas le redéfinir dans la classe d'administration pour chaque entité.

Nous vous remercions de votre aide.

Répondre

0

Il est difficile de dire à quoi cela ressemblera exactement si vous n'attachez pas form builder mais le meilleur moyen d'obtenir ces variables (si elles existent) sera de vider l'objet et de regarder toutes les variables.

{{ dump(form) }} 

De toute façon, vous ne devriez pas suivre cette méthode. La meilleure option consistera à écrire une classe formBuilder et à ajouter des contraintes de validation. Dépend du type, ils peuvent être différentes liste complète des types que vous pouvez obtenir de there et la documentation de type à l'intérieur, il devrait y avoir une liste complète des attributs disponibles pour le type choisi.