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?

Foi útil?

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:

http://codeigniter.com/wiki/mod_rewrite/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top