2013-07-29 50 views
1

validate方法我在模塊1/actions.php一個相當複雜的驗證方法從模塊1名爲/ executeMyActionsymfony的1.4 - 如何重用跨模塊

我想在模塊2重用這個而不是重複非常相似的代碼。

感覺就像我應該使用一個組件或類似的東西,但我不需要從模板中調用驗證,我需要將它作爲module1/executeMyAction或module2/executeMyAction的一部分調用,這樣我就可以設置各種用於handlle的executeMyActionSuccess.php模板的變量。

任何人都可以讓我知道我應該如何重用這個驗證代碼,我考慮將它移動到窗體類中,但這只是意味着我不能設置模板變量,並且它好像正在打破MVC結構。我對此不滿意。

真的很感激任何指導。

回答

2

如果您想要在操作之間共享代碼的某些部分,您可以創建一個自定義類,它將實現您需要的一些方法。您可以將課程放在應用程序或整個項目的lib目錄中。

E.g.創建一個apps/frontend/lib/myUtil.class.php

class myUtil 
{ 
    public static function addNumbers($a, $b) 
    { 
     return $a + $b; 
    } 
} 

然後在你的行動,你可以只使用:

$sum = myUtil::addNumbers(2, 3); 

如果你的代碼依賴於一些其他的對象,如果你不實現靜態方法,但創建的對象,最好類。例如。

class myUtil 
{ 
    protected $request; 

    public function __construct(sfWebRequest $request) 
    { 
     $this->request = $request; 
    } 

    public function sumFromRequest() 
    { 
     return $this->request->getParameter('a') + $this->request->getParameter('b'); 
    } 
} 

然後在動作

public function executeSomething(sfWebRequest $request) 
{ 
    $util = new myUtil($request); 
    $this->sum = $util->sumFromRequest(); 
} 

如果你的代碼是嚴格用於您可以創建自定義驗證可以在您的形式,然後用表單字段的驗證。 (這肯定是最好的解決方案)。您可以閱讀關於在Symfony文檔中創建自定義驗證器的信息。

+0

嗨,這似乎是比我的任何一個更好的appoach。驗證方法不僅可以驗證,還可以處理事務,設置模板變量等,因此不適合表單。謝謝你的想法,讚賞。 – Tofuwarrior