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