/ / Použitie viacerých databáz a problém s URI Routing na rovnakom CodeIgniter 3x aplikácia - php, .htaccess, codeigniter, url-rewriting, url-routing

Použitie viacerých databáz a problém s smerovaním URI na rovnakej aplikácii CodeIgniter 3x - php, .htaccess, codeigniter, url-rewriting, url-routing

Pracujem na malej webovej aplikácii. V mojej žiadosti sa riadim nasledujúcim prístupom.

Malý prehľad systému

  1. Aplikácia bude hostená napríklad na serveri (www.example.com)
  2. Klienti ako Microsoft, Cocacola, IBM .... atď sa zaregistrujú. Klienti získajú prístup k aplikácii pomocou adresy URL (www.example.com/ibm)
  3. Každý klient bude mať samostatnú databázu na ukladanie svojich údajov.
  4. Ak sa chcú zamestnanci klienta prihlásiťsystém by potom mal byť vzor adresy URL takto: (Www.example.com/ibm/user/login) ibm - je klient - je regulátor login - je metóda užívateľského radiča

Spýtal som sa na rovnakú otázku a odpoveď bola opravená a odoslaná: CodeIgniter Pomocník - pomocou viacerých databáz na rovnakú aplikáciu a problém s URI Routing

Moje riešenie je v poriadku pre CodeIgniter 2.X, ale bohužiaľ nefunguje pre CodeIgniter 3.X.

Ako to dosiahnuť v CodeIgniter 3.X?

odpovede:

0 pre odpoveď č. 1

Našiel som toto riešenie.

  1. Otvorte v textovom editore systém / core / router.php.
  2. Prejdite na číslo riadku 335 .... funkcia _validate_request (segmenty $)
  3. Nahraďte funkciu _validate_request týmto kódom.

    protected function _validate_request($segments)
    {
    if(count($segments)===1)
    {
    $segments[0]="";
    }
    if(count($segments) > 1)
    {
    $x=$segments;
    $a=1;
    for($i=0;$i<(count($segments)-1); $i++)
    {
    $segments[$i]=$x[$a];
    $a++;
    }
    unset($segments[$i]);
    }
    $c = count($segments);
    // Loop through our segments and return as soon as a controller
    // is found or when such a directory doesn"t exist
    while ($c-- > 0)
    {
    $test = $this->directory.ucfirst($this->translate_uri_dashes === TRUE ? str_replace("-", "_", $segments[0]) : $segments[0]);
    
    if ( ! file_exists(APPPATH."controllers/".$test.".php") && is_dir(APPPATH."controllers/".$this->directory.$segments[0]))
    {
    $this->set_directory(array_shift($segments), TRUE);
    continue;
    }
    return $segments;
    }
    // This means that all segments were actually directories
    return $segments;
    
    }