2015-07-17 18 views
5

यह मेरा पहला PHP ढांचा है। मैं अपने नियंत्रक में एक PHP फ़ाइल में posts.php है लेकिन जब मैं इसे चलाने के लिए करने की कोशिश की स्थानीय होस्ट/CodeIgniter/index.php/पोस्ट, यह त्रुटि आवेदन फ़ोल्डर के अंदर प्रदर्शित करता है 404कोडनिर्देशक 3.0.0 - त्रुटि 404 पृष्ठ नहीं मिला

.htaccess

<IfModule authz_core_module> 
Require all denied 
</IfModule> 
<IfModule !authz_core_module> 
Deny from all 
</IfModule> 

autoload.php

$autoload['libraries'] = array('database'); 
$autoload['helper'] = array('url'); 

config.php

$config['base_url'] = 'http://localhost/codeigniter/'; 
$config['index_page'] = 'index.php'; 

routes.php

$route['default_controller'] = 'welcome'; 
$route['404_override'] = ''; 
$route['translate_uri_dashes'] = FALSE; 

class Post extends CI_Model{ 

    function get_posts($num = 20, $start = 0){ 

     //$sql = "SELECT * FROM users WHERE active=1 ORDER BY date_added DESC LIMIT 0,20;"; 
     $this->db->select()->from('posts')->where('active', 1)->order_by('date_added', 'desc')->limit(0, 20); 
     $query=$this->db->get(); 
     return $query->result_array(); 

    } 

} 

नियंत्रक फ़ोल्डर में posts.php मॉडल फ़ोल्डर में post.php

class Posts extends CI_Controller{ 

    function index(){ 

     $this->load->model('post'); 
     $data['posts'] = $this->post->get_posts(); 
     echo "<pre>"; 
      print_r($data['posts']); 
     echo "</pre>";  

    } 

} 

यह एक खाली सरणी प्रदर्शित करना चाहिए, लेकिन यह त्रुटि 404 के बजाय

+0

यदि आप कोडिग्निटर 3.0 का उपयोग करते हैं तो post.php नियंत्रक Post.php होना चाहिए अनुप्रयोग फ़ोल्डर में htaccess को स्पर्श न करें केवल मुख्य निर्देशिका में जोड़ें। – user4419336

+0

चूंकि आपने मुख्य निर्देशिका में कॉन्फ़िगरेशन विज्ञापन सेट htaccess में index.php को नहीं हटाया है, तो आपके यूआरएल को index.php होना चाहिए http://www.example.com/index.php/controller – user4419336

+0

हाय, सुनिश्चित नहीं है कि आप क्या हैं मतलब, यह इस $ की तरह होना चाहिए-> लोड-> मॉडल ('पोस्ट') ;? – rendell

उत्तर

14

जब CodeIgniter का उपयोग कर 3

सभी नियंत्रकों और मॉडल वर्ग के नाम की वहाँ पहले अक्षर है और अपर केस उदाहरण के रूप में फ़ाइल नाम Welcome.php और welcome.php अपने मॉडल के लिए

नहीं करना चाहिए क्योंकि यह नियंत्रक के समान नाम है। मैं Model_post के मॉडल का नाम बदल जाएगा

फ़ाइल का नाम: Model_post.php

<?php 

class Model_post extends CI_Model { 

    public function some_function() { 

    } 

} 

इस तरह CodeIgniter उलझन में नहीं लिया जाएगा। अपने URL में post.php

<?php 

class Post extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('model_post'); 
    } 

    public function index() { 
     $this->model_post->some_function(); 
    } 

} 

भी तो अपने यूआरएल इंडेक्स का उपयोग करने की आवश्यकता होगी, तो index.php दूर करने के लिए CodeIgniter/इनको सेट अप नहीं:

पोस्ट नियंत्रक

फ़ाइल का नाम होगा हर जगह .php।

http://localhost/project/index.php/post 

http://www.example.com/index.php/post 

नोट: आवेदन फ़ोल्डर में इनको स्पर्श नहीं करते हैं, तो आप इनको एक मुख्य निर्देशिका में से पहले v3 आपको चिंता करने की जरूरत नहीं थी CodeIgniter की Htaccess For Codeigniter

पिछले संस्करणों को जोड़ने की जरूरत है नियंत्रकों के लिए ucfirst के बारे में लेकिन अब आप संस्करण 3 और ऊपर के लिए करते हैं।

+0

ऊपरी मामले के रूप में कक्षा का नाम और फ़ाइल नाम का पहला अक्षर समस्या नहीं बना रहा है, मैं वर्तमान में इसमें काम कर रहा हूं – Linus

+0

लेकिन मैं यह पूछना चाहता हूं कि अगर हम एप्लिकेशन फ़ोल्डर में .htacess फ़ाइल संपादित करें तो – Linus

+0

@AnmolRaghuvanshi क्या आप कोडनिर्देशक 2 का उपयोग कर रहे हैं या 3 जब आप index.php को हटाना चाहते हैं तो आपको अपने सर्वर – user4419336

1

जोड़ें चलता एक मार्ग ...

$route['posts'] = 'posts/index'; 
+0

हाय, मैंने कोशिश की लेकिन अभी भी काम नहीं कर रहा है। – rendell

+0

संपादित किया गया। मुद्दा मार्ग से संबंधित है। यदि आपके पास 'इंडेक्स' नामक विधि नहीं है तो अपने उपलब्ध तरीकों से उचित चुनें। मैं यह याद रखने की कोशिश कर रहा हूं कि मैंने इन ऐतिहासिक रूप से कैसे हल किया। क्या आप कोई प्रश्न पैरा पास कर रहे हैं? –

+0

अभी भी काम नहीं कर रहा है, मैंने अपना प्रश्न संपादित किया और मेरे द्वारा बनाए गए कार्यों को जोड़ा। – rendell

0

मेरे मामले में यह सवाल हल:

जाओ/routes.php config और लाइन 52 पर डिफ़ॉल्ट नियंत्रक परिभाषित करने के लिए;

यदि आपको इंडेक्स की बजाय किसी अन्य फ़ंक्शन की आवश्यकता है, तो मैं उस फ़ंक्शन को इंडेक्स फ़ंक्शन से कॉल करूंगा। लेकिन यह आप पर है।

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