2012-02-02 19 views
5

सीआरयूडी मॉड्यूल प्ले फ्रेमवर्क में सार्थक वर्ग नाम को परिवर्तित नहीं कर सकता है। उदाहरण के लिए, यदि मेरे पास एक श्रेणी मॉडल है और फिर CRUD का विस्तार करने के लिए नियंत्रक फ़ोल्डर में एक श्रेणी वर्ग बनाते हैं, तो श्रेणी लिंक व्यवस्थापक अनुभाग में प्रकट नहीं होगा। हालांकि, अगर मैं फ़ाइल को "श्रेणी" में बदलता हूं, तो यह काम करेगा। क्या इस छोटे से मुद्दे के लिए कोई समाधान है? क्योंकि मैं CakePHP के साथ खेलने के लिए इस्तेमाल किया और यह सब नाम सम्मेलनोंप्ले फ्रेमवर्क - सीआरयूडी नामकरण सम्मेलन

उत्तर

9

साथ बहुत अच्छी काम करता है documentation of CRUD module of Play framework

नियंत्रक के वर्ग के नाम के अनुसार एक अंतिम 'एस' के साथ मॉडल वर्ग के नाम हो गया है।

हालांकि, अगर आप इस्तेमाल कर सकते हैं @ 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); 

यह नियंत्रक नाम के अंतिम चरित्र के बिना शब्द को ढूंढकर मॉडल नाम पाता है। (मैंने अभी इसका परीक्षण किया है, आप अपने सीआरयूडी नियंत्रक को 'श्रेणीज़' के रूप में भी नाम दे सकते हैं। और यह ठीक काम करता है)

तो, यदि आप वास्तव में इसे 'पारंपरिक' तरीके से ठीक करना चाहते हैं, तो आप लाइन 260 को संशोधित कर सकते हैं CRUD.java और एक पुस्तकालय का उपयोग एकवचन-बहुवचन रूपांतरण जैसे Inflector in ModeShape के लिए करें। लेकिन मेरी राय में, @ CRUD का उपयोग करके। एनोटेशन के लिए बस ठीक और अधिक लागत प्रभावी है।

संबंधित मुद्दे