2011-03-06 64 views
5

在symfony中放置自定義庫或幫助器方法的最佳方法是什麼? 我正在使用學說與我的項目。我認爲放在一個地方是如何在symfony 1.4中創建/使用自定義類和幫助器?

project_root/lib/vendor/MyClasses/
但是,如果我想創建一個類或輔助函數,它會使用一些核心symfony/doctrine方法並返回結果,那麼如何做到這一點,我應該把它放在哪裏? 我希望它從不同的模塊調用,以避免代碼重複。

回答

7

至於問題的自定義庫的一部分,你可能會想要把你的外部庫到lib /供應商文件夾。由於symfony不會自動加載其中的所有內容,因此您必須告訴其自動加載器這樣做。

你可以擴展你的配置/ ProjectConfiguration.class.php(如描述here)或(這是更簡單和更清潔的方式),將它們添加到您的的config/autoload.yml(可能必須創建這一個)。 對於後面的選項,this是一個很好的開始尋找的地方。

+0

謝謝你的回答。您的兩個鏈接都指向相同的網址。你能檢查一下嗎? 因此,把它放在任何lib /目錄中會自動加載類?但是,我是否需要從任何symfony/doctrine類擴展自定義類,讓它們能夠訪問doctrine/symfony核心功能? – med 2011-03-07 09:03:04

+0

@medhad鏈接1固定。不,正如我所說,_/lib中/供應商/ _是把你的外部庫的最佳場所,但與標準配置,只有_lib /供應商/ symfony_文件夾被自動加載(見上文)。如果你想使用symfony的功能,你可能要考慮兩種包裝成一個插件。一些googleing肯定會帶你進一步。 – Burgi 2011-03-07 14:01:44

+1

只需添加我的發現,以便可以幫助正在閱讀本文的其他人! 想什麼,我發現,它也可以通過創建或把它的**應用程序/ lib中/ **目錄(特定應用程式)或**應用程序/模塊/ lib目錄**目錄中(使用一類不同的方法後,針對模塊)Symfony項目。Symfony會自動加載類,你可以調用你的動作。您可以將它從sFActions擴展或不擴展;但是這樣做,您將能夠訪問某些核心功能,如'sfContext :: getInstance()'和類似的其他類方法和屬性。 – med 2011-03-20 11:46:38

2

它似乎是一個duplicate question

至於問symfony's 1.2「權威指南」文檔:

輔助函數(返回HTML代碼的常規PHP函數)應該被保存在一個名爲FooBarHelper.php,文件,其中FooBar的是助手組的名稱。將文件存儲在apps/myapp/lib/helper /目錄中(或者在項目的lib /文件夾下創建的任何助手/目錄中),以便它可以由use_helper('FooBar')助手自動找到以包含。

所以,如果你想創建自定義的助手FooBar的 foo的()函數,創建文件的lib /幫手/ FooBarHelper.php

function foo() {echo "foo!"; } 

使用它在你的模板:

use_helper('FooBar') 
.... 

foo(); //outs "foo!" 
+0

但是我怎樣才能使用它從模塊操作而不是從視圖。假設我想獲得一個由包含結果集的Class/Helper方法返回的變量。看起來helper只能從模板中調用,它必須生成一些html輸出。我想用某種方法創建一個類,我可以從不同的模塊操作中調用該方法。哪個類可以擴展並放在哪裏? – med 2011-03-07 06:52:05

相關問題