Onde coloco arquivos de imagem, css, js etc. no Codeigniter?

144

Onde é aceitável colocar pastas css e pastas de arquivos de imagem? Eu estava pensando dentro da pasta view? No entanto, o controlador sempre redireciona o caminho para o URL base, portanto, tenho que especificar o caminho no arquivo .html para onde ele fica, o que é redundante.

triq
fonte

Respostas:

202

Eu tenho uma configuração como esta:

  • inscrição
  • sistema
  • ativos
    • js
    • imgs
    • css

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.

Eddie
fonte
1
oi eddie, gostaria de saber onde você coloca seu código de função .. devo colocá-lo em file_helper.php?
kebyang
3
Oi @KebyangBlabla Atualizei minha resposta com um pouco mais de informações que devem ajudá-lo.
Eddie
10
Para ter acesso a 'baseurl ()' você também precisa incluir o 'url' ajudante, assim:$autoload['helper'] = array('url', 'utility');
Jeffrey
O melhor seria ter uma pasta de ativos na pasta raiz da web (a minha é public_html) e, em seguida, CI em um diretório acima da raiz da web.
Nate Nolting
3
No caso de outros é como eu, para esclarecer, você acessá-lo como este <= ASSET_URL ();?> Css / css.css
JonYork
50

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
Juan Jo
fonte
1
o que é o index.php na pasta pública? é esse arquivo 404? graças
DELE
Desculpe pelo atraso, mas pelo lo: T O arquivo index.php será o arquivo que captará a solicitação e chamará o restante da estrutura.
Juan Jo
Estou usando o CodeIgniter-3.0.6. Não consigo encontrar nenhuma pasta chamada public. Existe algum problema para adicionar uma pasta com o mesmo nome.
Akhil Vijay
@AkhilVijay você não o encontrará na sua pasta codeigniter, a pasta será quando você a implantar em qualquer servidor
Anwar Hossain
a melhor maneira de trabalhar com o codeigniter é .htaccessremover /index.php?e chamar a pasta pública combase_url().'public/yourfolder';
Robert Blasco Villarroya
16

É assim que eu manejo os bens públicos. Aqui eu uso o método Bootstrap do Phalcon PHP .

Estrutura de pastas

|-.htaccess*
|-application/
|-public/
  |-.htaccess**
  |-index.php***
  |-css/
  |-js/
  |-img/
  |-font/
  |-upload/
|-system

Arquivos para editar

  1. .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>
  2. .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>
  3. index.php***

    Modifique o application caminho e o systemcaminho como,

    $system_path = '../system';
    $application_folder = '../application';

Agora você usa a publicpasta comobase_url()."public/[YOUR ASSET FOLDER]"

Espero que isto ajude :)

Ijas Ameenudeen
fonte
Você testou o código acima, acho que há um erro na última linha, você redireciona todas as solicitações para /publico motivo base_url ()."public/[...! Deveria ser justo base_url ()."/[YOUR ASSET FOLDER]".
Kerkouch
12

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.

cidadão conn
fonte
7

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.

Kreker
fonte
Estou com um bazilhão de anos de atraso, mas se alguém estiver lendo isso, esta resposta foi minha solução inicial, mas se você estiver gerenciando o acesso através de hosts virtuais, acho que é uma idéia melhor apontar o host virtual para a pasta pública e manter a configuração .htaccess. Upvote de qualquer maneira porque esta resposta me aponte para a solução
Vertig0
5

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.

Brinde de Cheesus
fonte
4

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>
Sandeep Mehra
fonte
4

Estou usando a versão mais recente do CodeIgniter 3.1.0. A estrutura de pastas é:

  • sistema
  • inscrição
  • guia de usuario
  • ativos
    • imagens
    • js
    • css

É aí que você deve colocar os arquivos de imagens, css e js dentro da pasta assets.

mais legal
fonte
3

Eu uso a seguinte estrutura de pastas:

application 
system 
static
    admin
        js
        css
        images
    public
        js
        css
        images
    uploads
        original
        thumbs
Escorpião
fonte
2

(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:

  • /inscrição/
  • /público/
  • / public / css /
  • / public / img /
  • / public / js /
  • /sistema/

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]
Anthony Scaife
fonte
2

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';
Rabab Sh
fonte
0

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"> 
Piyush Dhanotiya
fonte
-2

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" />
Stephen C
fonte