如何使用 Symfony2 加载控制器函数并将其渲染在 twig 标签中?
我正在使用 Symfony2 和 Twig。我的控制器中有一个返回特定文本的函数(如下)。是否可以直接从我的模板调用该函数,并将模板中的 {{text}} 更改为函数返回的任何内容(可能通过 Ajax)?
这是我的函数:
public function generateCode($url) {
$url = $_SERVER['SERVER_NAME'] . '/embed/' . $url;
$return = '<iframe>'.$url.'</iframe>';
return $return;
}
另一个控制器函数调用上面的函数并呈现我的模板:
public function getCodeAction($url) {
$text = $this->generateCode($url);
return $this->render('MyMyBundle:User:code.html.twig', array('text' => $text));
}
在我的模板中,我使用:
{{ text }}
显示值。
I am using Symfony2 and Twig. I have a function (below) in my controller that returns a specific text. Is it possible to call that function directly from my template and change the {{text}} in my template to whatever the function returns, possibly via Ajax?
Here's my function:
public function generateCode($url) {
$url = $_SERVER['SERVER_NAME'] . '/embed/' . $url;
$return = '<iframe>'.$url.'</iframe>';
return $return;
}
Another controller function calls the function above and renders my template:
public function getCodeAction($url) {
$text = $this->generateCode($url);
return $this->render('MyMyBundle:User:code.html.twig', array('text' => $text));
}
In my template I am using:
{{ text }}
to display the value.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
在 Symfony 2.2 中,这一点发生了变化。
请参阅 https://github.com/symfony/symfony/blob/2.2/升级-2.2.md
In Symfony 2.2, this was changed.
See https://github.com/symfony/symfony/blob/2.2/UPGRADE-2.2.md
如果您有动态数据,您可以使用 ajax,但据我从您的简要信息中可以看出,您始终可以直接从您的视图执行该控制器功能:
有关此的更多信息,请访问:
http://symfony.com/doc/2.0/quick_tour/the_view.html ,在嵌入其他控制器下
You can use ajax if you have dynamic data, but as far as I can see from your brief info, you can always execute that controller function directly from your view:
More Information on this available at:
http://symfony.com/doc/2.0/quick_tour/the_view.html, under Embedding other Controllers
根据记录,在新版本中您需要使用绝对 URL:
For the record, in new versions you need to use the absolute URL:
{{ render(controller("AcmeDemoBundle:Demo:topArticles", {'num': 10})) }}
{{ render(controller("AcmeDemoBundle:Demo:topArticles", {'num': 10})) }}
在 Silex 中,我是这样解决的:
如果没有路由名称,可以使用 URL:
如果使用 URL,我们应该始终连接 baseUrl。
In Silex I solved it like this:
If you do not have the route name, URL can be used:
If using URL we should always concat the baseUrl.
twig 中的Symfony 2.6+
:
控制器:
Symfony 2.6+
in twig:
controller: