Vous devez utiliser embedded controllers dans votre modèle:
{% render "yourBundle:Controller:action" with { 'data': data, } %}
mieux faire avec un itinéraire (de symfony security update):
{% render url('theactionroute', { 'data': data }) %}
Dans l'action que vous pouvez vérifier ce que vous voulez et retour une réponse/modèle vierge pour certaines circonstances.
Vous pouvez également envelopper votre rendu de modèle dans un essai & bloc catch et retourner un modèle d'erreur en cas d'exception brindille:
try {
$response = $this->render('yourBundle:Default:action.html.twig',
array('data' => $data));
} catch (\Exception $exc) {
return $this->render('yourBundle:Default:error.html.twig', array(
'message' => $exc->getMessage()
));
}
AFAIK il n'y a pas moyen d'attraper des exceptions dans Brindille. De toute façon, vous ** ne devriez pas ** gérer les exceptions en frontend. Vous devez le gérer dans votre action. P.S. Essayez-vous de rendre le modèle? Vous devriez 'render' action du contrôleur. Voulez-vous dire «inclure»? –
Je rends l'action d'un contrôleur. Cette action est uniquement restituée à certains utilisateurs et je voulais que l'action vérifie l'autorisation et lève une exception si l'utilisateur n'est pas autorisé à la voir. Je ne peux pas vérifier le modèle lui-même car ce n'est pas juste un contrôle 'is_granted'. Je veux qu'il lève une exception car il est aussi utilisé sous d'autres formes (autonome, ajax, etc.) – tamir
Avez-vous pensé à la mise en œuvre de votre propre filtre de brindilles ou de votre fonction, et de mettre toute la logique nécessaire là-bas? –