Como você configura o CodeIgniter para lidar com vários projetos com a base de IC compartilhada?

StackOverflow https://stackoverflow.com/questions/1540283

  •  20-09-2019
  •  | 
  •  

Pergunta

Vi vários exemplos de implementação de IC que afirmam que você pode colocar as pastas do projeto na pasta "Aplicativos" para o CodeIgniter.

No entanto, não consegui ver esse trabalho como prometido.

Aqui está o que eu fiz e o que gostaria de fazer - talvez você possa ajudar. Por uma questão de argumento, minha raiz do documento é /www /(não é, mas vamos usá -lo por uma questão de simplicidade)

Eu coloquei o CodeIgniter Core em/www/corelib/codeigniter

Eu coloquei a pasta System CodeIgniter em /www /ci_system

Eu coloquei o diretório de aplicativos em /www /aplicativos

Eu coloquei meu "ponto de entrada" em /www /dd

Agora digamos que eu tenho dois projetos: "DataEntry" e "cpanel"

As idéias é que eu posso ir para

h ** p: // myDomain/dd/dataEntry // para o aplicativo DataEntry e

h ** p: // myDomain/dd/cpanel // para o aplicativo cpanel.

Se eu organizar os diretórios de dataEntry e cpanel como este:

/www/aplicações/controladores/dataEntry

/www/aplicações/controladores/cpanel

/www/Applications/Models/DataEntry

/www/aplicações/modelos/cpanel

/www/Applications/Views/DataEntry

/www/aplicações/views/cpanel

Eu posso fazer isso funcionar bem. No entanto, o que eu gostaria de fazer é manter o modelo e a visualização no mesmo nível do controlador, para que eu tivesse o seguinte:

/www/aplicações/dataEntry/controladores

/www/aplicações/dataEntry/modelos

/www/aplicações/dataEntry/visualizações

/www/aplicações/cpanel/controladores

/www/aplicações/cpanel/modelos

/www/aplicações/cpanel/visualizações

Isso não parece funcionar.

Alguma sugestão?

-Cf

Foi útil?

Solução 2

Ok - eu tenho isso funcionando como desejado. Vou tentar escrever um "como fazer" mais extenso e fornecerei um link na seção de comentários.

Eu não precisei modificar mais .htaccess do que o IC exige - fiquei feliz com isso. Meu diretório de entrada é assim:

/dd/index.php

As duas peças principais estão aqui:

list($blank, $webpath, $app) = explode('/', $_SERVER['REQUEST_URI']);
        $application_folder = $_SERVER['DOCUMENT_ROOT]."/applications/$app";

Isso permite que um único index.php lide com todos os aplicativos.

A parte que estava faltando é que o AppName agora também deve ser o controlador principal ou ser um diretório dentro dos controladores. (O verdadeiro problema que tive era que estava hackeando tanto que tive configurações e rotas que me impediam de perceber o que eu estava realmente vendo: às vezes começar a limpar é imperativa.)

Outras dicas

Cada aplicativo ("DataEntry" e "cPanel") possui seu próprio arquivo principal índice.php que define a variável $ application_folder apropriada?

Além disso - e tenho certeza que você leu os documentos - mas Documentação do CodeIgniter afirma que o diretório /aplicações (ou diretórios, no seu caso) deve existir no diretório /sistema da seguinte forma:

system/application/foo/
system/application/foo/config/
system/application/foo/controllers/
system/application/foo/errors/
system/application/foo/libraries/
system/application/foo/models/
system/application/foo/views/
system/application/bar/
system/application/bar/config/
system/application/bar/controllers/
system/application/bar/errors/
system/application/bar/libraries/
system/application/bar/models/
system/application/bar/views/
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top