记录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');
答案 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');
}