Quando os activos devem ir em um projeto CodeIgniter?
-
05-07-2019 - |
Pergunta
Eu estou apenas começando com CodeIgniter, e eu não estou certo de onde coisas como CSS, JS, e as imagens devem ir. Fora da pasta do sistema inteiro parece ok, mas isso significa que tudo é separado. Dentro meios os caminhos de arquivos são mais longos, e eu estou preocupado que poderia bagunçar as coisas. Qual é a melhor prática sobre esta questão?
Solução
Eu costumo colocar pastas separadas no nível de raiz, então eu acabar com uma estrutura de diretórios como esta:
/system
/css
/js
/img
parece funcionar para mim -. Quando você usa site_url(url)
, o URL que gera é a partir da raiz, assim você pode usar site_url('css/file.css')
para gerar URLs para suas folhas de estilo etc
Outras dicas
Pessoalmente, eu rasgo o diretório application
fora do diretório system
e torná-lo um irmão para system
. Eu, então, criar um diretório do projeto em public_html (www)
onde eu mover index.php e guarde os meus bens públicos.
Vamos assumir que o projeto que você está trabalhando é chamado projekt
. No diretório pai para public_html (www)
criar um diretório chamado CISYSTEM
, e dentro deste diretório crie um diretório da versão que você está usando, 202
, 210
etc.
/CISYSTEM
/202
/210
/another_CI_version
/projekt_application
/models
/views
/controllers
/private_assets
/public_html
/projekt
index.php
.htaccess
css
img
js
lib
A beleza desta estrutura de diretório é ele adiciona outra camada de segurança e torna inoperante-fácil de atualizar / swap fora de seu núcleo CI. Além disso, você não deve fazer alterações para o núcleo -. Ter um único diretório onde o seu núcleo é armazenado e ter todos os projetos de referência a ela mantém as coisas DRY
Tudo isso baralhar diretório requer que você para redirecionar algumas coisas embora. Felizmente, CodeIgniter torna mais fácil -. Todas as mudanças podem ser feitas no arquivo index.php
Open index.php
e redirecionar algumas coisas:
Alterar: $system_path = 'system';
Para: $system_path = '../../CISYSTEM/210';
Alterar: $application_folder = 'application';
Para: $application_folder = '../../projekt_application';
Além disso, eu vejo um monte de gente falando sobre o uso de site_url()
em outras respostas. Eu recomendo a menos detalhado maneira de usar site_url()
... você não tem que chamá-lo de cada vez que se você fizer uso de elemento <base>
do HTML:
<base href="<?= site_url();?>">
Apenas incluir isso no <head>
do seu aplicativo e você pode chamar seus controladores diretamente ... como em:
<a href='controllername/functionname'>Some Action</a>
Felicidades
Eu odeio ter tantos diretórios no nível de raiz, então eu uso htaccess / público e uso de reescrever / scripts para / public / scripts e assim por diante.
Acho que é melhor para manter os ativos no nível da raiz. Você pode usar <?=base_url()?>
ecoar a raiz completa do site. No arquivo de configuração, você configurar a raiz do site. Esta declaração apenas ecos isso.
Devido a isso, você pode usar inclui assim:
<link href="<?=base_url()?>/css/style.css" rel="stylesheet" type="text/css" />
em qualquer lugar no seu código, e vai ainda receber http://example.com/css/style Css .
base_url () / css / name.css
Para usar o ajudante site_url (url), desta forma você deve primeiro configurar o Apache mod_rewrite (ou equivalente) para remover o segmento index.php da URI.
Caso contrário, o método site_url acrescenta index.php para a URL que provavelmente irá estragar os caminhos para seus ativos, se você tem-los no diretório base como acima.
Aqui está a documentação CodeIgniter na remoção index.php da URI: