2016-02-24 15 views
9

Ich habe mir 5 Stunden lang den Kopf geschlagen und das Problem gelöst, aber ich kann einfach nicht einschlafen, ohne den Grund dafür zu kennen. Lassen Sie mich das Problem zuerst erklären.Codeigniter HMVC + ion_auth Probleme beim Laden der Konfigurationselemente

Ich habe Codeigniter HMVC-Erweiterung verwendet und ion_auth als separates Modul installiert.

|-modules 
|--auth 
|---config 
|-----ion_auth.php 
|---controllers 
|-----auth.php 
|---models 
|-----ion_auth_model.php 
|---views 

Als ich versuchte, eine Benutzergruppe zu bekommen, fing ich an, verdrahtete SQL-Fehler zu bekommen. Dann verengte ich das Problem und fand heraus, dass die Artikel in config/ion_auth.php nicht in der Datei ion_auth_model.php geladen wurden.

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'

Dann habe ich versucht paar stopft und wenn ich den Index 'ion_auth' von paar Methodenaufrufe in ion_auth_model.php alles begann entfernen zu arbeiten.

änderte ich

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

zu

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

Kann mir jemand sagen, warum es funktioniert?

+0

Im Konstruktor des Ion Auth Modell ist die ion_auth Config wie folgt geladen werden: $ this-> last-> config ('auth/ion_auth', TRUE); – adarshdec23

+0

Ja. Es ist so geladen – Fawzan

Antwort

1

Dies ist die innere Umsetzung der CodeIgniter Funktion config-> item() im Dateisystem \ core gefunden \ 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; 
} 

Wenn Sie die $index Parameter, die Funktion überprüft, ob beiden Parameter übergeben werden in der Konfiguration initialisiert und geben config[$index] der CI-Instanz zurück; oder null, wenn einer von ihnen nicht initialisiert ist. Wenn in der CI-Instanz config[$item] nicht gesetzt ist, gibt die Funktion immer null zurück. Nehmen wir an, das ist nicht der Fall, da Ihr Anruf nicht abstürzt, wenn Sie $index vermeiden.

Also, wenn Sie $index als zweiten Parameter übergeben, stürzt Ihr Code, weil die Funktion null zurückgibt, und das bedeutet, dass die config[$index] der CI-Instanz nicht gesetzt ist. Jetzt ist die Frage, warum es nicht gesetzt ist, und ich kann Ihnen hier nicht helfen, aber es sieht so aus, als ob Sie fehlen, um einige Module zu laden.

Mit freundlichen Grüßen

Verwandte Themen