我有一些事情,我必須在每個動作中調用,比如從我的數據庫中獲取標籤,或者所有文章的編號等。
現在我總是在每個動作中激發其他函數我想要展示它。有沒有什麼辦法可以在不觸發適合當前路線的行爲的情況下觸發某些功能,並在這些功能中指定一些樹枝變量?Symfony2 - 在每個路由中調用一些操作
1
A
回答
2
感謝DonCallisto我做了這個:
<?php
namespace Puzzle\InfobusBundle\EventListener;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Bundle\TwigBundle\TwigEngine;
class MyListener{
protected $doctrine;
protected $templating;
protected $session;
protected $container;
/**
* @param ContainerInterface $container
*/
public function __construct($security, $doctrine, $session, $templating, $container){
$this->doctrine=$doctrine;
$this->session=$session;
$this->templating=$templating;
$this->container=$container;
}
public function onKernelRequest() {
$this->container->get('twig')->addGlobal('myVar', 1234);
}
而且在應用程序/配置/ config.yml:
services:
acme_my.exception.my_listener:
class: Acme\MyBundle\EventListener\MyListener
arguments: ["@security.context", "@doctrine", "@session", "@templating", "@service_container"]
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
現在onKernelRequest中的代碼在每個頁面上激活代碼,並且我可以發送一些變量來分支模板。
2
可以以這種方式行事:
- 創建一個全球性的「假」行動,將接受特定的「類型」
- 定義操作調度員的每一個請求(即服務)將路由(或用戶
$router
symfony2對象,只要您將路由名稱作爲參數傳遞給您的「假」動作即可) - 調用正確的操作後,執行所有需要執行的操作
所以,像這樣
public function actionDispatcher(Request $request, $route_name, $parameters)
{
/* retrieve the router */
$router = $this->get('router');
$myRouteDefaultsArray = $router->getRouteCollection->get('route_name')->getDefaults();
/* retrieve the correct action */
$myAction = $myRouteDefaultsArray['_controller'];
/*use your action here */
[.....]
/* fire your functions here */
[.....]
/* render the twig template along your variables here */
[.....]
}
}
+0
看看我的片段。 –
相關問題
- 1. 在Symfony2中調試路由
- 2. 在每個函數調用中執行一些操作php
- 3. React路由器 - 根據當前路由執行一些操作
- 4. 在Symfony2中路由
- 5. Symfony2:控制器中操作/路由的完整路徑
- 6. 如何在Symfony2中禁用某些路徑/ URL的路由
- 7. 路由到多個操作
- 8. 強制路由器在Symfony2中對某些路由使用prod控制器
- 9. 在symfony2中檢查路由
- 10. 在Symfony2路由中允許「/」
- 11. Symfony2:在每一個動作上調用控制器/文件
- 12. Symfony2路由器 - 如何調用註釋路由
- 13. 配置路由的一個子 - Symfony2的
- 14. Symfony2路由
- 15. 如何在symfony2中創建一個唯一的路由模式
- 16. Symfony2動態路由器不起作用
- 17. Symfony2中沒有路由的工作
- 18. 作爲迴應路由器路由組件中的回調操作
- 19. 單一路由中的多個路由:: get()調用Laravel 4
- 20. Symfony2直接調用控制器沒有路由的動作
- 21. 如何通過MVC中的操作指定路由來調用操作?
- 22. 使用symfony2路由組件(symfony2之外)
- 23. 重寫symfony2中的單個路由
- 24. Symfony2中:路由和參數
- 25. symfony2中的自動路由
- 26. 自定義路由ASP.NET MVC在每個控制器中設置默認操作
- 27. 每次更新路由時都會調用一個函數vue.js
- 28. MVC路由僅適用於某些操作結果
- 29. 調用操作從路線
- 30. 的Symfony2 ACCESS_CONTROL,匹配包含一些字的所有路由
我建議你閱讀一些關於symfony2的東西。那些你要求的,是symfony2的基本原則,並很好地解釋了網絡 – DonCallisto
哦,謝謝。我讀過這本書。但我沒有在那裏找到答案。 –
我的錯:初次不明白你的問題。 – DonCallisto