【发布时间】:2014-11-28 14:16:42
【问题描述】:
在 Symfony2 中,我如何在 Twig 文件中获取控制器变量或返回...?即我有一个返回结果数组的函数,我想在 twig 文件中显示这些结果......?
PHP 控制器:
<?php
namespace TalkTalk\NewsInfrastructure\Sitemap\Factory;
use TalkTalk\NewsInfrastructure\Article\Factory\DbArticleReadRepository;
use TalkTalk\NewsInfrastructure\DatabaseRepository;
Class SitemapFactory extends DatabaseRepository{
/**
* @var string
*/
private $baseUrl = 'news/';
/**
* @var string
*/
private $feedsSlug;
/**
* @var string
*/
private $articleSlug;
/**
* @var string
*/
private $siteMap;
/**
* @array URLforSitemap[]
*/
private $urls = array();
/**
* @return mixed
*/
public function getURLs()
{
$this->urls = $this->db->createQueryBuilder()
->select('faf.article_id', 'faf.feed_id')
->addSelect('f.slug AS feedSlug')
->addSelect('a.slug AS articleSlug')
->addSelect("CONCAT('news/' , f.slug, '/' , a.slug) AS url")
->from('article_feeds', 'faf')
->leftJoin('faf', 'articles', 'a', 'faf.article_id = a.id')
->leftJoin('faf', 'feeds', 'f', 'faf.feed_id = f.id');
return $this->urls->execute()->fetch(\PDO::FETCH_OBJ);
}
public function setSiteMap()
{
$this->siteMap = '<?xml version="1.0" encoding="UTF-8"?>';
$this->siteMap .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
foreach($this->urls as $url){
$this->siteMap .= '<url>';
$this->siteMap .= '<loc>'.$url.'</loc>';
$this->siteMap .= '<lastmod>2014-11-26</lastmod>';
$this->siteMap .= '<changefreq>daily</changefreq>';
$this->siteMap .= '<priority>0.5</priority>';
$this->siteMap .= '<url>';
}
echo $this->siteMap .= '</urlset>';
}
public function getSiteMap()
{
return $this->siteMap;
}
}
树枝文件(目前):
{# src/TalkTalk/NewsInfrastructure/Sitemap/Views/sitemap.twig #}
<! DOCTYPE html>
<html>
<head>
{% block head %}
<title>{% block title %}Sitemao{% endblock %} </title>
{% endblock %}
</head>
<body>
<h1>{{ Sitemap }}</h1>
<ul>
{% foreach test as url %}
<li>{{ }}</li>
</ul>
</body>
</html>
我现在可以在函数括号 {% %} 之间的 twig 中使用 for 循环,并在这些括号 {{ }} 之间显示结果,但是我如何将控制器的结果带入 twig 文件...?
【问题讨论】:
-
第一个文件实际上不是控制器...
-
嗯,它是一个工厂类...带有 set/get 方法,那么我如何将这些返回传递到树枝模板中
-
也许发布你的控制器而不是工厂——然后人们可以告诉你要编辑你的代码的哪一部分。
-
这是一个工厂/控制器,这个工厂没有不同的控制器.....?