2012-02-02 67 views
5

CRUD模塊無法在播放框架中轉換有意義的類名稱。例如,如果我有一個類別模型,然後在控制器文件夾中創建一個類別類以擴展CRUD,則類別鏈接將不會出現在管理部分中。但是,如果我將文件重命名爲「Categorys」,它將起作用。有沒有解決這個小問題的方法?因爲我用CakePHP的發揮,它適用於所有的命名約定Play Framework - CRUD命名約定

回答

9

不錯根據documentation of CRUD module of Play framework

控制器的類名必須是模型類的名稱與最後的「S」。

但是,你可以使用@ CRUD.For()註釋單獨定製的CRUD控制器的命名:

package controllers; 

import models.Category; 

@CRUD.For(Category.class) 
public class Categories extends CRUD { 

} 

編輯:通過CRUD模塊的源代碼

快速略讀之後,我認爲模型命名分辨率在{位置播放} /modules/crud/app/controllers/CRUD.java(適用於版本1.2.4)在260行左右:

259    String name = controllerClass.getSimpleName().replace("$", ""); 
260    name = "models." + name.substring(0, name.length() - 1); 

只需查找沒有控制器名稱的最後一個字符的單詞即可找到型號名稱。 (我剛剛測試過,你甚至可以將你的CRUD控制器命名爲'Categoryz',它的工作原理很好)

所以,如果你真的想以'傳統'方式解決這個問題,你可以修改260行CRUD.java並利用一些庫進行單數複數轉換,如Inflector in ModeShape。但在我看來,使用@CRUD.For註釋是很好,更具成本效益。