symfony 中的 render 方法如何用于将数据传递给模板?
How is render method in symfony used to pass the data to template?
我正在尝试学习 symfony 并且正在通读关于 symfony 的书 site.I 无法理解第一个示例 symfony 应用程序部分中的以下部分代码。
博客控制器 returns $this->render('Blog/list.html.php',array('posts'=>$posts));}
那么如何在视图模板
中访问array('posts=>$posts')
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller ;
class BlogController extends Controller
{
public function listAction()
{ $posts = $this->get('doctrine')->getManager()->createQuery('SELECT p FROM AcmeBlogBundle:Post p')->execute();
return $this->render('Blog/list.html.php',array('posts'=>$posts));
}
<!-- app/Resources/views/Blog/list.html.php -->
<?php $view->extend('layout.html.php')?>
<?php $view['slots']->set('title','List of Posts')?>
<h1>
List of Posts
</h1>
<ul>
<?php foreach($posts as $post):?>
<li>
<a href="<?phpecho $view['router']->generate('blog_show',array('id'=>$post->getId()))?>">
<?php echo $post->getTitle()?>
</a>
</li>
<?php endforeach?>
</ul>
它所做的是使用 extract 然后包含。类似于:
<?php
function render($template, array $vars) {
extract($vars);
ob_start(); // This is for retrieving the result
// of the template and not print it directly.
include $template;
$result = ob_get_clean();
}
你可以在Symfony Templating Component中看到真正的实现。
我正在尝试学习 symfony 并且正在通读关于 symfony 的书 site.I 无法理解第一个示例 symfony 应用程序部分中的以下部分代码。
博客控制器 returns $this->render('Blog/list.html.php',array('posts'=>$posts));}
那么如何在视图模板
array('posts=>$posts')
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller ;
class BlogController extends Controller
{
public function listAction()
{ $posts = $this->get('doctrine')->getManager()->createQuery('SELECT p FROM AcmeBlogBundle:Post p')->execute();
return $this->render('Blog/list.html.php',array('posts'=>$posts));
}
<!-- app/Resources/views/Blog/list.html.php -->
<?php $view->extend('layout.html.php')?>
<?php $view['slots']->set('title','List of Posts')?>
<h1>
List of Posts
</h1>
<ul>
<?php foreach($posts as $post):?>
<li>
<a href="<?phpecho $view['router']->generate('blog_show',array('id'=>$post->getId()))?>">
<?php echo $post->getTitle()?>
</a>
</li>
<?php endforeach?>
</ul>
它所做的是使用 extract 然后包含。类似于:
<?php
function render($template, array $vars) {
extract($vars);
ob_start(); // This is for retrieving the result
// of the template and not print it directly.
include $template;
$result = ob_get_clean();
}
你可以在Symfony Templating Component中看到真正的实现。