Symfony2 和 Twig:如何以及在何处插入 PHP 函数以用于 TWIG?
Symfony2 and Twig: How and where do I insert a PHP function for use in TWIG?
我需要在模板 TWIG 中调用 PHP 函数。我如何以及在何处插入该功能?
这是我的例子:
我的控制器是:
namespace BackendBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use BackendBundle\Entity\Comisiones;
use BackendBundle\Entity\Liquidaciones;
use BackendBundle\Form\ComisionesType;
use BackendBundle\Form\LiquidacionesType;
/**
* Comisiones controller.
*
*/
class ComisionesController extends Controller
{
/**
* Lists all Comisiones entities.
*
*/
public function indexAction()
{
$twig = new Twig_Environment($loader);
$function = new Twig_SimpleFunction("decir_hola", function () {
$saludo='Hola!';
return $saludo;
});
$em = $this->getDoctrine()->getManager();
$comisiones = $em->getRepository('BackendBundle:Comisiones')->findComisio();
return $this->render('comisiones/index.html.twig', array(
'comisiones' => $comisiones,
));
}
我的 Twig 模板是:
{% block body %}
{{decir_hola()}}
{% endblock %}
但我收到此错误消息:
试图从命名空间 "BackendBundle\Controller" 加载 class "Twig_Environment"。
您是否忘记了另一个命名空间的 "use" 语句?
缺少什么?
您需要在 Twig 中的 class 名称前加上反斜杠(例如 \Twig_Environment
而不是 Twig_Environment
)。否则,PHP 会将那些 class 名称视为当前名称空间的一部分。
但是,您不应在控制器中注册自定义 Twig 函数、过滤器等,而应注册自定义 Twig 扩展。您可以阅读更多相关信息 in the Symfony documentation。
我需要在模板 TWIG 中调用 PHP 函数。我如何以及在何处插入该功能? 这是我的例子: 我的控制器是:
namespace BackendBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use BackendBundle\Entity\Comisiones;
use BackendBundle\Entity\Liquidaciones;
use BackendBundle\Form\ComisionesType;
use BackendBundle\Form\LiquidacionesType;
/**
* Comisiones controller.
*
*/
class ComisionesController extends Controller
{
/**
* Lists all Comisiones entities.
*
*/
public function indexAction()
{
$twig = new Twig_Environment($loader);
$function = new Twig_SimpleFunction("decir_hola", function () {
$saludo='Hola!';
return $saludo;
});
$em = $this->getDoctrine()->getManager();
$comisiones = $em->getRepository('BackendBundle:Comisiones')->findComisio();
return $this->render('comisiones/index.html.twig', array(
'comisiones' => $comisiones,
));
}
我的 Twig 模板是:
{% block body %}
{{decir_hola()}}
{% endblock %}
但我收到此错误消息:
试图从命名空间 "BackendBundle\Controller" 加载 class "Twig_Environment"。 您是否忘记了另一个命名空间的 "use" 语句?
缺少什么?
您需要在 Twig 中的 class 名称前加上反斜杠(例如 \Twig_Environment
而不是 Twig_Environment
)。否则,PHP 会将那些 class 名称视为当前名称空间的一部分。
但是,您不应在控制器中注册自定义 Twig 函数、过滤器等,而应注册自定义 Twig 扩展。您可以阅读更多相关信息 in the Symfony documentation。