php - Where does pagination live when using datamappers, services and domain object trio -
सेवा / डेटामैपर / डोमेन ऑब्जेक्ट त्रिको का उपयोग करते समय मेरी पृष्ठ पर अंक लगने के लिए सही स्थान माना जाता है?
उदाहरण:
- कुछ दिए गए मानदंडों के साथ पोर्ट प्राप्त करें
- परिणामों को पृष्ठांकित करें
- पता करें कि हम किस पृष्ठ पर हैं, पृष्ठ की संख्या कुल, परिणाम आदि की संख्या .. दृश्य वर्ग से
नीचे कुछ ऐसी चीज़ है जो मैंने यहां और अब लिखा है, लेकिन यह मेरे आवेदन के समान है।
< कोड> क्लास पोस्टकंट्रोलर नियंत्रक {फ़ंक्शन व्यू पोस्ट्स ()) को वापस करता है {रिटर्न $ इस- & gt; सर्विस फ़ैक्टरी - & gt; बिल्ड ('पोस्ट') - & gt; getPosts ($ aCriteria, $ this- & gt; अनुरोध- & gt; _get ('पृष्ठ' ), 10); }}मैं वर्तमान में प्रत्येक सेवा में पेजिंग पैरामीटर की गणना और भंडारण दोनों करता हूं ध्यान दें कि मैं किसी भी डेटा को अपने नियंत्रक से दृश्य में नहीं डाल रहा हूं।
वर्ग PostService AbstractService {public $ posts; सार्वजनिक $ iTotalPages; // यह यहाँ नहीं है यह करता है? फ़ंक्शन getPosts ($ aCriteria, $ iPage, $ iItemsPerPage) {$ mapper = $ this- & gt; डेटामापरफिचरि- & gt; बिल्ड ('पोस्ट'); // मुझे नहीं पता है कि नीचे कहां डालना है (पैरामीटर और कोड स्वयं) $ iCount = $ mapper- & gt; गिनती ($ aCriteria); $ IOffset = $ iItemsPerPage * $ iPage; $ This- & gt; iTotalPages = $ iCount / $ iItemsPerPage; $ This- & gt; पोस्ट = $ mapper- & gt; खोजें ($ aCriteria, $ iOffset, $ iOffset + $ iItemsPerPage); वापसी $ this- & gt; पदों; }}मेरे नियंत्रक के रूप में मॉडल परत के समान उदाहरण के लिए मेरे विचार हैं, इसलिए मैं दृश्य से
$ service- & gt; iTotalPages कॉल कर सकता हूं, लेकिन यह गलत महसूस करता है।क्लास पोस्ट्सव्वेज एब्सट्रैव का विस्तार करता है {फ़ंक्शन व्यू पोस्ट () {$ सेवा = $ this- & gt; सेवा फ़ैक्टरी- & gt; बिल्ड ('पोस्ट'); अगर (गणना ($ सेवा- & gt; पद) & gt; 0) {$ this- & gt; टेम्पलेट- & gt; असाइन_वर ('TOTAL_PAGES', $ सेवा- & gt; iTotalPages); $ This- & gt; टेम्पलेट- & gt; असाइन_वर ('पोस्ट', $ सेवा- & gt; पोस्ट); }}}समाधान?
1) पेजिंग के लिए एक सेवा बनाएं और आवश्यकता के अनुसार पोस्ट सेवा के साथ नियंत्रक विनिमय डेटा है?
2) पृष्ठ पर अंक लगाना के लिए एक सहायक वर्ग बनाएं, जिसमें प्रत्येक सेवा शामिल हो सकती है? (कैसे इस तरह के एक वर्ग की तरह दिखेंगे?)
3) AbstractService के लिए जेनेरिक पृष्ठांकन जोड़ें?
4) मेरे रिपॉप्स के लिए कुछ प्रकार की पेजिंग समर्थन जोड़ें? < / Div>
आप का जवाब बहुत अच्छा है, हालांकि मेरे पास कुछ सुझाव हैं।
परत स्थान:
पृष्ठ पर अंक लगाना बुनियादी ढांचे डेटा एक्सेस परत में रहना चाहिए, ऐसा इसलिए है कि आपके पास डेटा कैसे प्राप्त किया जाता है, इस पर निम्न स्तर पर नियंत्रण है।
उच्चतम अभिविन्यास
पृष्ठ पर अंक लगाना के इंटरफेस का सार होना चाहिए और यूआई में सेवा के माध्यम से उजागर होना चाहिए, क्योंकि इसकी एक फ्रंट-एंड चिंता है। (मुझे लगता है कि आप पहले से ही आपके उत्तर में शामिल हैं)
अमूर्त:
यूआई को क्या पता होना चाहिए पृष्ठ अनुक्रमणिका, पेज की संख्या, प्रति पृष्ठ वस्तुओं की संख्या, और कुल आइटम
इनपुट: (आपके फ़िललर्स का हिस्सा)
- खोज फ़िल्टर
- फिल्टर छंटनी (यदि आवश्यक हो)
- पृष्ठ अनुक्रमणिका।
- प्रति पृष्ठ वस्तुओं की संख्या (अगर यूआई नियंत्रण रखता है, यदि नहीं तो यह समझाया जाना चाहिए)
आउटपुट:
- छिद्रित संग्रह
- पृष्ठों की संख्या (नेविगेशन के लिए)
- कुल आइटमों की संख्या (यदि यूआई में जरूरी है)
Comments
Post a Comment