Php 带渲染控制器的Symfony 3细枝文件

Php 带渲染控制器的Symfony 3细枝文件,php,symfony,controller,twig,Php,Symfony,Controller,Twig,我对西蒙尼有意见 我有一个视频控制器,可以呈现一个小树枝页面 此细枝页包括另一个具有rendercontroller的细枝页。有了这个渲染控制器,路由崩溃,它说我用第一个控制器发送的视频变量不存在。怎么了 这是VideoController的代码: public function getVideo(Request $request, $id) { $entityManager = $this->getDoctrine()->getManager(); $video =

我对西蒙尼有意见

我有一个视频控制器,可以呈现一个小树枝页面

此细枝页包括另一个具有rendercontroller的细枝页。有了这个渲染控制器,路由崩溃,它说我用第一个控制器发送的视频变量不存在。怎么了

这是VideoController的代码:

public function getVideo(Request $request, $id) {
    $entityManager = $this->getDoctrine()->getManager();
    $video = $entityManager->getRepository('AppBundle:Video')->getVidById($id);
    return $this->render('vids/videos.html.twig', ['video' => $video]); //Needs improvements
}
class CommentsController extends Controller 
{
/*
 * Check if session is valid. If so, user can comment. SECURITY SYSTEM NEEDS TO BE DEVELOPED!!!
 * @Route("/", name="comment")
 * @Method({"GET", "POST"})
 */
public function commentVideoAction(Request $request) {
    $comment = new Comment();
    $form = $this->createFormBuilder($comment)
    ->add('text', TextType::class)
    ->add('Invia Commento', SubmitType::class)
    ->getForm();
    $form->handleRequest($request);
    if($form->isSubmitted() && $form->isValid()) {
        $comment = $form->getData();
        $entityManager = $this->getDoctrine()->getManager();
        $entityManager->persist($comment);
        $entityManager->flush();
        return $this->render('vids/videos.html.twig');
    }
    return $this->render('vids/comment.html.twig', array(
    'form' => $form->createView(),
));
}
}
videos.html.twig:

{% block main %}
<center>
     <video controls style="width:720px;height:360px;" poster="poster.png">
     <source src="{{ video.link }}" type="video/mp4;" codecs="avc1.42E01E, mp4a.40.2" />
     </video>
     {{ render(controller('AppBundle:Video:commentVideo')) }}
</center>
{% endblock %}
{% block comment %}
<br><br>
  <center>
    {{ form_start(form) }}
    {{ form_widget(form) }}
    {{ form_end(form) }}
</center>
{% endblock %}

我想你的录像机出毛病了

尝试使用公共函数getVideoActionRequest$request,$id,而不仅仅是getVideo

而且你的结构很糟糕,你的控制器中有一个循环,试着这样做:

videos.html.twig:

{% block main %}
<center>
     <video controls style="width:720px;height:360px;" poster="poster.png">
     <source src="{{ video.link }}" type="video/mp4;" codecs="avc1.42E01E, mp4a.40.2" />
     </video>
     {{ render(controller('AppBundle:Video:commentVideo')) }}
</center>
{% endblock %}
{% block comment %}
<br><br>
  <center>
    {{ form_start(form) }}
    {{ form_widget(form) }}
    {{ form_end(form) }}
</center>
{% endblock %}

在render commentVideoAction中,您有细枝文件vids/videos.html.twig,但不传递视频变量。我觉得你用的模板不好

哪个变量出错?视频。我也在问题中插入了这些信息!您还需要将CommentController中的变量$video传递给模板…不需要在此处传递变量,因为他不在CommentController中使用该变量,但在您的模板videos.html.twig中,有一个视频变量…由视频控制器在此处给出:$this->render'vides/videos.html.twig',['video'=>$video]是,但方法不会传递此信息。你必须将此信息注册到你的控制器操作中。该死,没有看到comment controller渲染视频模板。。。我认为他在这里犯了一个错误。。。。
class CommentsController extends Controller 
{
/*
 * Check if session is valid. If so, user can comment. SECURITY SYSTEM NEEDS TO BE DEVELOPED!!!
 * @Route("/", name="comment")
 * @Method({"GET", "POST"})
 */
public function commentVideoAction(Request $request) {
    $comment = new Comment();
    $form = $this->createFormBuilder($comment)
    ->add('text', TextType::class)
    ->add('Invia Commento', SubmitType::class)
    ->getForm();
    $form->handleRequest($request);
    if($form->isSubmitted() && $form->isValid()) {
        $comment = $form->getData();
        $entityManager = $this->getDoctrine()->getManager();
        $entityManager->persist($comment);
        $entityManager->flush();
        return $this->render('vids/videos.html.twig');
    }
    return $this->render('vids/comment.html.twig', array(
    'form' => $form->createView(),
));
}
}