假設我在網站上的多個位置發表評論。我如何創建類似 {{render_widget('comments',{「object」:object})}}?這將呈現與該對象的所有評論的形式和列表?Symfony如何使用PHP和樹枝創建可重複使用的小部件
5
A
回答
5
創建服務:
// src/Acme/HelloBundle/Service/Widget.php
namespace Acme\HelloBundle\Service;
use Symfony\Component\DependencyInjection\ContainerInterface;
class Widget
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function getComments()
{
$request = $this->container->get('request'); // use service_container to access request, doctrine, twig, etc...
}
}
聲明一個服務:
# src/Acme/HelloBundle/Resources/config/services.yml
parameters:
# ...
my_widget.class: Acme\HelloBundle\Service\Widget
services:
my_widget:
class: "%my_widget.class%"
arguments: ["@service_container"]
# scope: container can be omitted as it is the default
在控制器使用的服務:
namespace Acme\HelloBundle\Controller;
class BlogController {
public function getPostAction($id) {
// get post from db
$widget = $this->get('my_widget'); // get your widget in controller
$comments = $widget->getComments(); // do something with comments
return $this->render('AcmeHelloBundle:Blog:index.html.twig',
array('widget' => $widget) // pass widget to twig
);
}
}
或樹枝,如果你通過你的服務模板像render()
以上功能:
#AcmeHelloBundle:Blog:index.html.twig
{{ widget.getComments()|raw }}
而且有用的閱讀有關How to work with Scopes
1
我已經做了另一種方式的文檔。我註冊嫩枝擴展與功能{{意見(對象)}}
的函數註冊這樣
'comments' => new \Twig_Function_Method($this, 'comments', array(
'needs_environment' => true,
'is_safe' => array('html')
))
這樣,我也不需要指定|生的過濾器。
+0
什麼是'{{comments(object)}}'中的'object'? –
+0
變量? :D評論對象 – CappY
相關問題
- 1. 創建CSS使用樹枝
- 2. 如何使用樹枝創建擴展
- 3. 沒有Symfony的樹枝使用
- 4. 使用Symfony 2的CDN樹枝資產
- 5. 重定向到頁面#關於使用symfony和樹枝
- 6. 如何使用ajax和symfony在樹枝分區中顯示pdf?
- 7. Symfony和PhpStorm樹枝沒有給我樹枝功能的建議
- 8. 創建可重用的小部件
- 9. ASP.NET - 創建可重用的小部件
- 10. 使用symfony2和樹枝創建文件文本
- 11. 樹枝設置可重複使用的一段html
- 12. 使用樹枝
- 13. 如何在樹枝和Symfony2中使用或使用條件
- 14. 使用PHP模板的symfony 2,而不是樹枝
- 15. Symfony:使CSRF令牌可用於所有的樹枝模板
- 16. 是否可以使用資產和樹枝爲資產創建條件路徑?
- 17. 使用Forms和Rest API創建可重用的窗口小部件
- 18. 如何使用樹枝創建視圖幫助程序
- 19. 樹枝內使用樹枝翻譯裏面的樹枝
- 20. Symfony的3.2:樹枝/樹枝V2.0.0需要PHP^7.0
- 21. Symfony 2:在表單構建器中使用樹枝擴展
- 22. 如何使用Symfony 3在樹枝中包含AJAX
- 23. 如何創建一個symfony樹枝過濾器?
- 24. 如何在Symfony(Twig)中包含可重用的小部件?
- 25. 使用參數創建可重複使用的Ember.Select控件
- 26. 使用KnockoutJS創建可重複使用的組件
- 27. 僅使用Pagerfanta助手與Symfony 2和樹枝
- 28. 要使用小部件在symfony中創建複選框並驗證它?
- 29. 如何使用Assetic與CacheBustingWorker和小枝
- 30. 使用javascript和PHP創建窗口小部件
也許嘗試使用[service](http://symfony.com/doc/current/book/service_container.html)爲此? –
然後將此服務傳遞給樹枝模板。 –
@Victor請給我一個示例代碼。 :) – CappY