2009-11-09 14 views
8

मैं कोडइग्निटर में एक ऐप पर काम कर रहा हूं, और मैं एप्लिकेशन में कई ऑब्जेक्ट्स के लिए एडमिन पेज रखना चाहता हूं, और मुझे आश्चर्य है कि इन्हें एमवीसी संरचना में रखने का बेहतर तरीका क्या होगा।कोडइग्निटर में व्यवस्थापक पेज बनाने का सबसे अच्छा तरीका?

आइडिया 1: प्रत्येक नियंत्रक में, एक व्यवस्थापक फ़ंक्शन है, और उन सभी व्यवस्थापक पृष्ठों को जोड़ें जिन्हें मैं उस फ़ंक्शन में जोड़ना चाहता हूं। उदाहरण URL: domain.com/articles/admin

आइडिया 2 एक नया व्यवस्थापक नियंत्रक है, जो कई विभिन्न मॉडलों को संदर्भित करने के लिए होता है, और वहाँ में व्यवस्थापक पृष्ठों के सभी डाल दिया। उदाहरण यूआरएल: domain.com/admin/articles

किस तरह से बेहतर होगा?

स्पष्टीकरण के लिए संपादित करें: व्यवस्थापक कार्यक्षमता के द्वारा, मेरा मतलब है किसी भी वस्तु पर मूल CRUD क्रियाएं करने में सक्षम होना, और सभी ऑब्जेक्ट्स की एक सूची प्रदर्शित करने में सक्षम होना।

उत्तर

2

मैं जस्टिन को व्यक्तिगत नियंत्रकों का हिस्सा रखने में गूंज दूंगा।

आपको किसी प्रकार की प्राधिकरण प्रणाली स्थापित करनी चाहिए जो व्यक्तिगत नियंत्रक इसका उपयोग कर सकते हैं ताकि लॉग इन (उपयोगकर्ता नाम) और उनके पास कितनी पहुंच हो (व्यवस्थापक/सदस्य/आदि)। Here's a SO thread on CodeIgniter Auth Classes

दृश्य तब सशर्त रूप से उपयुक्त लिंक दिखाएगा, और नियंत्रक मॉडल को किसी भी डेटा को पास करने या संपादन दृश्य प्रस्तुत करने से पहले लेख की जांच करके नीति को लागू करेगा। अनधिकृत पहुंच पर एक त्रुटि प्रदान की जा सकती है, या बस गैर संपादन दृश्य के साथ प्रस्तुत करना।

यह दृष्टिकोण सबसे अधिक समझ में आता है (कम से कम मेरे लिए) क्योंकि सभी कार्यक्षमता व्यक्तिगत नियंत्रक में संग्रहीत होती है। एक ही व्यवस्थापक नियंत्रक में व्यवस्थापक फ़ंक्शंस को रखने का अर्थ है कि जब भी आप somethign नया जोड़ते हैं (या कुछ हटाते हैं) तो आपको दो नियंत्रकों (व्यवस्थापक, और वास्तविक नियंत्रक) का प्रबंधन करना होगा।

यदि आप प्रत्येक नियंत्रक में ऑथ चेकिंग डालने के बारे में चिंतित हैं, तो आप सभी ऑथ सेटअप के साथ एक सामान्य नियंत्रक वर्ग बना सकते हैं, फिर अपने नियंत्रक इसे बढ़ाएं। अंत में अलग-अलग नियंत्रक प्रमाणन की जांच के रूप में सरल रूप में हो सकता है:

function edit() 
{ 
    if(!$this->auth()){ 
     //display auth error, or forward to view page 
    } 
} 

बेशक एसीएल कार्यान्वयन किसी तरह का यह बेहतर होगा, लेकिन मैं नहीं मानता कि CodeIgniter एक 'सरकारी' एसीएल है।

+0

डाउनवॉट्स के मुट्ठी भर में से - किसी को भी समझाने की परवाह क्यों है? –

1

'व्यवस्थापक' कार्यक्षमता के आधार पर आपका क्या मतलब है ... आमतौर पर, इसे 'संपादन' दृश्य के रूप में माना जाता है।

और आम तौर पर, आप मौजूदा नियंत्रक का उपयोग 'संपादन' दृश्य की सेवा के लिए करते हैं ताकि अधिकृत उपयोगकर्ता संपादन कर सकें (आपके मामले में, केवल व्यवस्थापक उपयोगकर्ता)।

0

व्यक्तिगत पसंद की तरह दिखता है, मुझे सब कुछ केंद्रीकृत करने से प्यार है ताकि व्यवस्थापक नियंत्रक मेरी शर्त होगी।

इस तरह से मुझे व्यवस्थापक कार्यों को संशोधित करते समय 5 अलग-अलग नियंत्रकों को खोलना नहीं होगा।

+1

यह अच्छी तरह से विस्तार नहीं करता है। यहां समस्या यह है कि आप कई असंबद्ध कोड को एक साथ जोड़ रहे हैं। प्रत्येक बार जब PHP इंजन नियंत्रक पर चलता है तो उसे आपके बैकएंड में सबकुछ संकलित करना होता है न कि केवल कार्रवाई के लिए प्रासंगिक सामग्री। –

+0

मैं इसके विपरीत बहस कर सकता हूं। व्यवस्थापक क्षेत्र यातायात गहन नहीं हैं, उपयोगकर्ता पृष्ठ हैं, और यदि आप प्रत्येक अनुभाग के लिए एक व्यवस्थापक क्षेत्र को एक साथ जोड़ रहे हैं, तो इंजन को प्रत्येक व्यवस्थापक कोड पर चलाना होगा जो उपयोगकर्ता के लिए पूरी तरह से अप्रासंगिक है, इसलिए एक अपशिष्ट। फिर भी, यह वास्तव में कोड कैशर्स के उपयोग से संबंधित नहीं है। – pablasso

2

नियंत्रकों फ़ोल्डर में एक व्यवस्थापक फ़ोल्डर रखना एक अच्छा विचार है जिसमें आप अपने प्रशासन तक पहुंच सकते हैं उदा। yoursite.com/admin/users।

सभी अपने प्रशासनिक जरूरतों को किया जाएगा और सभी तरीकों तो जैसे उपयोगकर्ता विशेषाधिकारों की जाँच करके की रक्षा की जाएगी:

if (! $this->auth->logged_in(array('login', 'admin'))) 
{ 
    $this->session->set_flashdata('message', 'You do not have access to view this page'); 

    redirect('admin/users/login'); 
} 

फिर 'व्यवस्थापक' फ़ोल्डर के बाहर सभी नियंत्रकों जाएगा - साइट के अपने प्रकार के आधार पर - होगा केवल देखने के लिए, आदि .. कोई प्रशासनिक भाग नहीं है।

+0

आप इसे हर विधि में करते हैं? पुनरावृत्ति को बचाने के लिए आपको नियंत्रक के कन्स्ट्रक्टर या बेस कंट्रोलर में ऐसा करना चाहिए। http://philsturgeon.co.uk/news/2010/02/CodeIgniter- बेस- क्लास- कीपिंग-it-DRY –

+0

बेशक आप इसे बेस कंट्रोलर में कर सकते हैं। –

6

निश्चित रूप से एक अलग नियंत्रक कम से कम!

मुझे लगता था कि मैं अपने सभी व्यवस्थापक कार्यों को एक नियंत्रक में रख सकता था, लेकिन जैसे ही मेरे कार्यक्रम बढ़े, मुझे एहसास हुआ कि मुझे अपने प्रशासन खंड में कई नियंत्रकों की आवश्यकता है।

तो, मैंने अपने नियंत्रक फ़ोल्डर के अंदर "व्यवस्थापक" नाम के साथ एक फ़ोल्डर बनाया और मेरे सभी प्रशासनिक नियंत्रकों को वहां रखा।

  • आवेदन
    • नियंत्रकों
      • front.php
      • welcome.php
      • व्यवस्थापक
          : तो मेरी फ़ोल्डरों कुछ ऐसा दिखाई देगा 210
        • dashboard.php
        • useradmin.php
  • आदि ...

एक समस्या यह है इस बनाता है, हालांकि, जब आप लिखते हैं http://mysite.com/admin अपने ब्राउज़र में, यह एक 404 पेज देता है। इसलिए, आपका "आवेदन/config/routes.php" फाइल करने के लिए जाने के लिए और एक कस्टम मार्ग जोड़ें:

$routes['admin'] = 'admin/dashboard/index'; 
2

आइडिया 2 बेहतर है। सिस्टम/एप्लिकेशन/नियंत्रक/व्यवस्थापक

आप अपने सभी व्यवस्थापक नियंत्रकों को यहां रखते हैं।

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