2016-02-24 15 views
9

Ho sbattuto la testa per 5 ore e alla fine ho risolto il problema ma non riesco ad andare a dormire senza conoscere il motivo. Lasciatemi spiegare prima il problema.Codeigniter HMVC + ion_auth problemi di caricamento degli elementi di configurazione

Ho usato estensione codemiter HMVC e installato ion_auth come modulo separato.

Quando stavo cercando di ottenere un gruppo di utenti ho iniziato a ottenere errori SQL cablati. Quindi ho ristretto il problema e ho capito che gli articoli in config/ion_auth.php non erano stati caricati nel file ion_auth_model.php.

ERROR - 2016-02-24 20:09:26 --> Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as id , . name , . description JOIN ON .=. id WHERE . = '2'' at line 1 - Invalid query: SELECT . as id , . name , . description JOIN ON .=. id WHERE . = '2'

Poi ho provato paio di stoffe e quando rimuovo l'indice 'ion_auth' da paio di chiamate di metodo in ion_auth_model.php tutto ha iniziato a lavorare.

ho cambiato

$this->tables = $this->config->item('tables', 'ion_auth'); 
$this->join   = $this->config->item('join', 'ion_auth); 

a

$this->tables = $this->config->item('tables'); 
$this->join   = $this->config->item('join'); 

Qualcuno può dirmi perché ha funzionato?

+0

Nel costruttore della Ion Auth modello, è il config ion_auth caricata come segue: $ this-> load-> config ('auth/ion_auth', true); – adarshdec23

+0

Sì. È caricato in questo modo – Fawzan

risposta

1

Questa è l'implementazione interna della funzione CodeIgniter config-> item() in file system \ Core \ config.php

/** 
* Fetch a config file item 
* 
* @param string $item Config item name 
* @param string $index Index name 
* @return string|null The configuration item or NULL if the item doesn't exist 
*/ 
public function item($item, $index = '') 
{ 
    if ($index == '') 
    { 
     return isset($this->config[$item]) ? $this->config[$item] : NULL; 
    } 

    return isset($this->config[$index], $this->config[$index][$item]) ? $this->config[$index][$item] : NULL; 
} 

Quando si passa il parametro $index, la funzione verifica se entrambi i parametri sono inizializzati nella config e restituisce config[$index] dell'istanza CI; oppure null se uno di essi non è inizializzato.

Se config[$item] non è impostato nell'istanza CI, la funzione restituisce sempre null. Supponiamo che questo non sia il caso, poiché la tua chiamata non si blocca quando si evita lo $index.

Quindi, quando si passa $index come secondo parametro, il codice si blocca perché la funzione restituisce null, e ciò significa che il config[$index] dell'istanza CI non è impostato. Ora la domanda è: perché non è impostato, e non posso aiutarti qui, ma sembra che tu manchi di caricare alcuni moduli.

migliori saluti

Problemi correlati