2015-07-17 20 views
5

Questo è il mio primo framework php. Ho un file php nel mio controller che è posts.php ma quando ho provato a farlo funzionare localhost/codeigniter/index.php/messaggi, viene visualizzato l'errore 404Codeigniter 3.0.0 - errore 404 pagina non trovata

.htaccess all'interno della cartella dell'applicazione

<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; 

post.php nella cartella modello

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 nella cartella controllore

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>";  

    } 

} 

Si dovrebbe visualizzare un array vuoto ma mostra errore 404 invece

+0

se si utilizza Codeigniter 3.0, quindi il controller Post.php dovrebbe essere Post.php Non toccare htaccess nella cartella delle applicazioni, solo aggiungerne uno nella directory principale. – user4419336

+0

Inoltre, dato che non hai rimosso index.php in config annuncio impostato htaccess nella directory principale, allora il tuo url dovrà avere index.php http://www.example.com/index.php/controller – user4419336

+0

Ciao, non sono sicuro di cosa significa, dovrebbe essere come questo $ questo-> caricare-> modello ('Post') ;? – rendell

risposta

14

Quando si utilizza CodeIgniter 3

Tutti i controller e modelli dovrebbero avere lì prima lettera del nome della classe e il nome file come esempio di caso superiore Welcome.php e non welcome.php

per il modello perché è lo stesso nome del controller. Vorrei cambiare il nome del modello di Model_post

Nome file: Model_post.php

<?php 

class Model_post extends CI_Model { 

    public function some_function() { 

    } 

} 

In questo modo CodeIgniter non otterrà confuso.

Messaggio controller sarebbe

Nome file: 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(); 
    } 

} 

anche nel vostro URL se non configurare CodeIgniter/.htaccess per rimuovere index.php allora il vostro URL sarà necessario utilizzare index .php ogni dove.

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

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

Nota: non toccare il .htaccess nella cartella dell'applicazione, se avete bisogno .htaccess aggiungere uno nella directory principale Htaccess For Codeigniter

versioni precedenti di CodeIgniter prima v3 non hai bisogno di preoccuparsi su ucfirst per i controller ma ora lo fai per la versione 3 e successive.

+0

la prima lettera del nome della classe e il nome del file come maiuscole non creano il problema al momento sto lavorando in esso – Linus

+0

ma voglio chiedere cosa succederà se modifichiamo il file .htacess nella cartella dell'applicazione – Linus

+0

@AnmolRaghuvanshi Stai usando il codice 2 o 3 Quando si desidera rimuovere index.php è necessario un htaccess nella directory principale per adattarsi al proprio server – user4419336

1

Add un percorso come ...

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

Ciao, l'ho provato ma non funziona ancora. – rendell

+0

Modificato. Il problema è correlato al percorso. Se non si dispone di un metodo chiamato 'index', scegliere appropriato dai metodi disponibili. Sto cercando di ricordare come ho risolto questi storicamente. Stai passando qualche parametro di query? –

+0

Ancora non funziona, ho modificato la mia domanda e ho aggiunto le funzioni che ho creato. – rendell

0

Nel mio caso questo risolto la questione:

Vai a config/routes.php e definire il controller di default sulla linea 52;

Nel caso in cui sia necessaria un'altra funzione invece dell'indice, chiamerei quella funzione dalla funzione indice. Ma questo è su di te.

Problemi correlati