Como você configura o CodeIgniter para lidar com vários projetos com a base de IC compartilhada?
-
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
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/