Symfony 树枝中的嵌入式控制器

Symfony 树枝中的嵌入式控制器,symfony,controller,twig,Symfony,Controller,Twig,大家好,这是我的控制器: <?php namespace ng\NearBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class WelcomeController extends Controller { public function indexAction() { return $this->render('ngNearBundle:Welcom

大家好,这是我的控制器:

   <?php

namespace ng\NearBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class WelcomeController extends Controller
{
  public function indexAction()
  {
   return $this->render('ngNearBundle:Welcome:index.html.twig', array('nom' => 'winzou'));
  }
  public function Header(){
  return $this->render('ngNearBundle:Welcome:nav.html.twig', array('nom' => 'winzou'));
  }
  public function Body(){
     return $this->render('ngNearBundle:Welcome:nav.html.twig', array('nom' => 'winzou'));
  }
}
我有一个错误:

An exception has been thrown during the rendering of a template ("The controller for URI "/_fragment" is not callable.") in ngNearBundle:Welcome:index.html.twig at line 2.

有人知道原因以及如何正确嵌入控制器吗?

Symfony2中控制器方法的约定规定,在方法名称的末尾有操作

因此,通过改变你的方法:

public function HeaderAction(){
     return $this->render('ngNearBundle:Welcome:nav.html.twig', array('nom' => 'winzou'));
}
public function BodyAction(){
     return $this->render('ngNearBundle:Welcome:nav.html.twig', array('nom' => 'winzou'));
}

您将获得所需的结果。

并负责渲染,它会在内部使用大量资源。它就像一个新请求一样,如果可能,请使用twig include

如果您试图在twig而不是URL中渲染控制器,则必须启用Symfony fragments配置:

app/config/config.yml 快看一眼;如果不需要代码隐藏,请使用“包含”:
public function HeaderAction(){
     return $this->render('ngNearBundle:Welcome:nav.html.twig', array('nom' => 'winzou'));
}
public function BodyAction(){
     return $this->render('ngNearBundle:Welcome:nav.html.twig', array('nom' => 'winzou'));
}
framework:
    # ...
    fragments: { path: /_fragment }