Vide template Twig garde à jeter “Certains paramètres obligatoires sont manquants” exception
Chaque recherche, j'ai essayer avec cette, me hôte placeholding problèmes. Ce n'est pas mon cas. Voyons les gars si vous pouvez m'aider. Merci à l'avance.
Mon routage.fichier yml:
mgfbw_blogslug:
path: /blog/{slug}
defaults: { _controller: MGFBWBundle:Blog:blogShow }
Mon blogShowAction:
public function blogShowAction()
{
$request = $this->getRequest();
$slug = $request->get('slug');
$em = $this->getDoctrine()->getEntityManager();
$blog = $em->getRepository('MGFBWBundle:Blog')->findBySlug($slug);
if (!$blog) {
throw $this->createNotFoundException('No posts.');
}
return $this->render('MGFBWBundle:Blog:blogshow.html.twig', array(
'blog' => $blog,
));
}
Mon blogshow.html.rameau:
{% extends 'MGFTMBundle::layout.html.twig' %}
{% block title %}Title{% endblock %}
{% block heading %}Heading{% endblock %}
{% block content %}
{% endblock %}
Ma mise en page.html.twig est trop long pour coller, mais je vous jure, il n'y a pas Twig {{ path() }} appels. Je l'ai vérifié.
Donc, à partir de mon blog page d'index-je générer un mgfbw_blogslug chemin:
<a href="{{ path('mgfbw_blogslug', { 'slug': blog.slug }) }}">Comments</a> ({{ blog.comments.count }})
Et voici mon problème. Mon blogshow.html.twig est vide sur le but, après avoir essayé de tout et encore plus, mais je continue à recevoir cette exception:
An exception has been thrown during the rendering of a template ("Some mandatory parameters are missing ("slug") to generate a URL for route "mgfbw_blogslug".") in "MGFBWBundle:Blog:blogshow.html.twig".
Toute personne ayant le même problème? Je ne suis pas générer de chemin d'accès dans le modèle! Comment puis-je obtenir cette exception?
Merci pour votre aide.
Gérez-vous votre indexAction le même que celui de votre showAction? C'est pas très clair ce que votre page d'index est bien, ni ce que l'url que vous êtes sur lorsque cette exception.
OriginalL'auteur gomman | 2013-05-28
Vous devez vous connecter pour publier un commentaire.
votre getSlug méthode sur votre blog entité renvoie la valeur null. Vous n'avez pas le slug jeu mais votre parcours nécessite une limace.
La méthode du chemin ne sais pas comment générer de la route parce que le paramètre obligatoire slug est manquant.
ajouter une valeur par défaut pour le paramètre slug dans votre routage ( et attraper le bloc par défaut à partir de votre contrôleur de rendu quelque chose comme ce blog n'existe pas ).
et/ou ajouter une valeur par défaut de la valeur de votre chemin dans twig comme ceci:
vérifier la valeur par défaut de limaces dans votre contrôleur et le retour des informations utiles pour l'utilisateur. exemple
Meilleur moyen serait d'utiliser @ParamConverter avoir votre entité récupérée à partir de l'entité gestionnaire automatiquement et transmis à votre blogShowAction méthode. Peut-être utiliser @Template pour nettoyer votre contrôleur. ParamConverter jette NotFoundException si il n'y a pas d'entité blog, alors assurez-vous de l'attraper correctement.
OriginalL'auteur nifr
Je pense que votre $blog est un tableau vide, qui va par le biais de votre chèque, il est donc impossible de définir le paramètre slug ici
{{ path('mgfbw_blogslug', { 'slug': blog.slug }) }}
Vous n'utilisez pas la bonne façon de récupérer votre blog, et à l'exception lancer n'est pas droit, car findBy méthodes return array. (contrairement à php les méthodes de tableau).
Vous devriez essayer comme ceci:
Blog $blog implicitement l'utilisation de la doctrine param convertisseur, qui va lever une exception si pas de blog s'est retrouvé.
OriginalL'auteur copndz