2016-07-30 63 views
0

我想調整我的控制器烘焙代碼(vendor/cakephp/bake/src/Template/Bake/Template/Bake/Controller/controller)。 ctp),所以當烘烤控制器時,它會自動檢測模型中是否安裝了(fe Translate-)行爲,並添加「use Cake \ I18n \ I18n;」在烘烤過程中給控制器。CakePHP 3 - 如何在烘焙控制器時識別模型中的安裝行爲

那麼,誰能告訴我如何識別控制器烘焙代碼內安裝的行爲?

+0

您是否知道這僅適用於烘焙控制器時已存在的表類?你也知道你應該在你的應用程序模板結構中創建自定義烘焙模板嗎?它看起來好像您即將修改供應商文件。 – ndm

+0

是的,我知道我需要在src/Template/Bake中創建自定義烘焙模板。這就是我已經做的事情。 – Lucky

+0

當我使用翻譯字段創建新表時,我將翻譯的字段添加爲'i18n_fieldName'。在Model和Entity烘焙文件中,我使用'i18n_'檢查字段並自動修改代碼以添加翻譯行爲。我也想在Controller的烘焙文件中做到這一點:我應該添加「使用Cake \ I18n \ I18n;」在控制器中,當有'i18n_'字段或模型中存在轉換行爲時...當烘焙模型時,您可以檢查'i18n _...'字段的$ validation數組,但顯然$ validation數組是在控制器烘焙文件中不可用? – Lucky

回答

0

鑑於烘焙控制器時表類已經存在,您應該能夠從傳遞給視圖的$modelObj獲取所需的信息,它是與控制器關聯的表類的實例。

可通過Table::behaviors()獲得的行爲註冊表應該具有您需要的信息。

$modelObj->behaviors()->has('Translate') 

當然,您可以從表中得到進一步的信息,如架構(Table::schema()),驗證規則(Table::validator()),等等

又見

+0

謝謝!如果($ modelObj-> behaviours() - > has('Translate')){做的伎倆! – Lucky

相關問題