Respostas:
Eu tenho uma configuração como esta:
Em seguida, tenho uma função auxiliar que simplesmente retorna o caminho completo para isso, dependendo da minha configuração, algo semelhante a:
application / helpers / utility_helper.php:
function asset_url(){
return base_url().'assets/';
}
Normalmente, manterei rotinas comuns semelhantes a essa no mesmo arquivo e carregarei automaticamente com a configuração de carregamento automático do codeigniter.
Nota: carregar automaticamente o auxiliar de URL para
base_url()
acesso.
application / config / autoload.php:
$autoload['helper'] = array('url','utility');
Você terá acesso a asset_url()
todo o seu código.
$autoload['helper'] = array('url', 'utility');
Não, dentro da pasta views não é bom.
Look: Você deve ter 3 pastas básicas no seu projeto:
system // Essa é a estrutura do IC, não há muitos motivos para tocar nesses arquivos
application // é aqui que a sua lógica vai, os arquivos que compõem o aplicativo ,
public // este deve ser o seu documentroot
Por motivos de segurança, é melhor manter sua estrutura e o aplicativo fora da raiz do documento (public_html, htdocs, public, www ... etc)
Dentro da sua pasta pública, você deve colocar suas informações públicas, o que os navegadores podem ver, é comum encontrar as pastas: images, js, css; então sua estrutura será:
|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
public
. Existe algum problema para adicionar uma pasta com o mesmo nome.
.htaccess
remover /index.php?
e chamar a pasta pública combase_url().'public/yourfolder';
É assim que eu manejo os bens públicos. Aqui eu uso o método Bootstrap do Phalcon PHP .
|-.htaccess*
|-application/
|-public/
|-.htaccess**
|-index.php***
|-css/
|-js/
|-img/
|-font/
|-upload/
|-system
.htaccess*
Todas as solicitações ao projeto serão reescritas no diretório público / diretório, tornando-o a raiz do documento. Esta etapa garante que as pastas internas do projeto permaneçam ocultas da exibição pública e, assim, elimina ameaças de segurança desse tipo. - Phalconphp Doc
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.htaccess**
As regras verificarão se o arquivo solicitado existe e, se existir, não precisa ser reescrito pelo módulo do servidor da web. - Phalconphp Doc
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
index.php***
Modifique o application
caminho e o system
caminho como,
$system_path = '../system';
$application_folder = '../application';
Agora você usa a public
pasta comobase_url()."public/[YOUR ASSET FOLDER]"
Espero que isto ajude :)
/public
o motivo base_url ()."public/[...
! Deveria ser justo base_url ()."/[YOUR ASSET FOLDER]"
.
Normalmente, coloco todos os meus arquivos assim em uma pasta "assets" na raiz do aplicativo e, em seguida, certifico-me de usar um Asset_Helper para apontar para esses arquivos para mim. Isso é o que o CodeIgniter sugere.
Ninguém diz que você precisa modificar o .htacces e adicionar o diretório na condição de reescrita. Eu criei um diretório "public" no diretório raiz, junto com "system", "application", "index.php". e editou o arquivo .htaccess assim:
RewriteCond $1 !^(index\.php|public|robots\.txt)
Agora você precisa apenas chamar <?php echo base_url()."/public/yourdirectory/yuorfile";?>
Você pode adicionar subdiretório dentro do diretório "public" como desejar.
Independentemente de onde você colocou o arquivo CSS, você pode simplesmente usar o auxiliar CodeIgniter "html" chamado link_tag (). Você aplicaria esse auxiliar mais ou menos assim:
echo link_tag('folder/subfolder/stylesheet.css');
Cabe a você localizar o arquivo CSS no local mais apropriado (na sua opinião). Você precisaria carregar automaticamente o auxiliar "html" ou carregá-lo separadamente para usá-lo.
As pessoas continuam sugerindo o uso de base_url () para conseguir isso, mas na verdade não é realmente a maneira "CodeIgniter" de fazer isso (acho que essa pergunta tem algumas duplicatas). Isso funcionará, mas uma das razões para o uso de uma estrutura é usar as funções pré-criadas nela.
Existem muitos ajudantes no codeigniter para fazer esse tipo de coisa.
adicione uma pasta a qualquer nome, por exemplo, public, adicione o arquivo .htaccess e escreva allow de tudo o que significa, nesta pasta todos os seus arquivos e todas as pastas não darão erro. Acesso proibido! use-o assim
<link href="<?php echo base_url(); ?>application/public/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="<?php echo base_url(); ?>application/public/js/javascript.js"></script>
Estou usando a versão mais recente do CodeIgniter 3.1.0. A estrutura de pastas é:
É aí que você deve colocar os arquivos de imagens, css e js dentro da pasta assets.
(Eu sou novo no Codeigniter, então não sei se esse é o melhor conselho)
Eu mantenho arquivos disponíveis publicamente na minha pasta pública. É lógico que eles estejam lá, e eu não quero usar o Codeigniter para algo para o qual não preciso usá-lo.
A árvore de diretórios fica assim:
Os únicos arquivos que eu mantenho em / public / são index.php do Codeigniter e meu arquivo .htaccess:
RewriteEngine On
RewriteBase /
RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]
RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
você pode colocar a pasta css dentro da pasta assest (nomeie qualquer nome) no diretório do seu projeto como:
- ci_app
- application
- views
- assets
- css
- style.css
... quando você deseja carregar esse arquivo em uma página, pode usar a função base_url () desta maneira:
<head>
<link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'>
</head>
e você tem certeza de adicionar base_url do seu projeto no arquivo config.php da seguinte maneira:
$config['base_url'] = 'http://localhost/ci_app';
Olá, nossa estrutura é como Aplicação, sistema, user_guide
crie um ativo de nome de pasta próximo a todas as pastas e, dentro desta pasta de ativos, crie uma pasta css e javascript e images coloque todos os seus css js dentro das pastas
Agora vá para header.php e chame o css assim.
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/touchTouch.css">
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/style.css">
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/camera.css">
O link_tag()
ajudante é claramente a maneira de fazer isso. Coloque seu css onde ele normalmente pertence, em site_root / css /, e use o auxiliar:
Dos documentos do CodeIgniter ...
echo link_tag('css/mystyles.css');
Resultado
<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />