2015-06-26 107 views
0

我創建了一個工作得很好的模塊。從模塊中的控制器和視圖中,我想要訪問我創建的稱爲t的模塊的靜態轉換方法。 根據Yii's documentation我應該能夠訪問模塊類(名爲模塊)的Module::t()的靜態方法,但我只有在我預先安裝名稱空間(如\app\modules\commission\Module::t())時才能使用。Yii2:從模塊中調用模塊類的靜態方法

這是一個配置問題,我錯過了,不得不修改,或者這是使用命名空間訪問模塊類的唯一方法?我搜索了互聯網,但無法找到類似的問題。

+1

寫在文件 '使用\程序\模塊\佣金\模塊的頂部;' 比你可以用'模塊:: T()'直接 – mohit

+0

@mohit,我已經做到了,它的工作原理好,thanx。但我希望這不是必要的。如果我想稍後切換到'\ backend \ modules \ ...'或'\ console \ modules \ ...',我必須使用靜態函數更改模塊中的所有對象。 – Barry

回答

0

你可以嘗試使用aliases和配置參數定義別名爲模塊別名

'aliases' => [ 
    '@mymodule' => 'app\modules\commission\Module', 
], 

,然後打電話給你的方法是這樣的:

call_user_func([Yii::getAlias('@mymodule'), 't', $params]);

不那麼優雅作爲Module::t(),但給你靈活地改變你的模塊類,實現你的自定義t()方法

+0

感謝您的回答。事實上,它並不那麼優雅,並且它與使用'\ Yii :: $ app-> getModule('commission'):: t()' – Barry

+0

'的文檔中描述的方法大致相同,您可以添加自己的另一個選項class autoloader,因爲yii2依靠psr-4自動加載標準,所以你必須使用'use \ app \ modules \ commission \ Module'來加載你的類 – Tony