Symfony2:如何在视图模板内的函数中获取资产的URL

时间:2014-06-24 04:40:34

标签: php symfony twig

记录here我可以使用以下代码在视图中阅读我的图像文件。

<img src="<?php echo $view['assets']->getUrl('images/logo.png') ?>" alt="Symfony!" />
////  This outputs the image

或者我也可以

<?php 
    echo $view['assets']->getUrl('images/logo.png'); 
    // echoes --->  /assets/images/logo.png
?>

但是,我的观点非常复杂,我想在功能中划分不同的视图部分。因此,当我在函数中编写上述代码时,它不起作用。

function one(){
    echo $view['assets']->getUrl('images/logo.png'); 
}
one();
Notice: Undefined variable: view in ....\Resources\views\Section\splash.html.php on line 12

Fatal error: Call to a member function getUrl() on a non-object in ....\Resources\views\Section\splash.html.php on line 12

有人可以指导我如何才能让它发挥作用?


这是我的完整视图文件。

<?php
echo $view['assets']->getUrl('images/logo.png') . "<br><br>";

function one(){
    echo $view['assets']->getUrl('images/logo.png') . "<br><br>";
}
one();
?>
<img src="<?php echo $view['assets']->getUrl('images/logo.png') ?>" alt="no image" />

这就是我从控制器调用视图的方式

return $this->render('MySimpleBundle:Section:splash.html.php');

2 个答案:

答案 0 :(得分:1)

函数“one()”有自己的变量范围,因此您必须将url传递给函数 http://php.net/manual/en/language.variables.scope.php

function one($url)
{
    echo $view['assets']->getUrl($url) . "<br><br>";
}

无论如何,在我看来你应该简单地使用:

<img src="<?php echo $view['assets']->getUrl('images/logo.png') ?>" alt="Symfony!" />

渲染图像,如果你的视图变得复杂,可能是正确的时间切换到像树枝一样强大的模板引擎

答案 1 :(得分:1)

实际上,正如通知所说,它是变量$view

您应该将$view作为参数传递,或者在函数范围内将其声明为全局:

function one($view) {
    echo $view['assets']->getUrl('images/logo.png');
}

function one() {
    global $view;
    echo $view['assets']->getUrl('images/logo.png');
}