Layouts

Pessoal sou novo no CI e não estou entendo
como que vou usar meus layouts dinamicos no mesmo.

Alguem pode avaliar se isso que fiz esta nos padrões?

Exemplo:

Criei uma pasta chama "layout" na raiz do CI, então
ficou as pastas "layout", "system" e o arquivo
index.php.

Dentro da pasta "layout" tem header.php e footer.php.

Em todas minhas views esta ficando assim:

  1. <?php include("layout/header.php"); ?>
  2.  
  3. // conteúdo html
  4.  
  5. <?php include("layout/footer.php"); ?>

Para que eu não fique repetindo toda hora o codigo html e
fique mais dinamico o meu site.

Tem algum problema em fazer assim ou esta fora
dos padrões do MVC ou do Design Patterns ?

Consegui

Pessoal já consegui.
Peguei uma library e adicionei uma MY_Loader.php a ela.

  1. <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
  2. class MY_Loader extends CI_Loader {
  3.  
  4.   public $layout = "application";
  5.  
  6.   function MY_Loader() {
  7.     parent::CI_Loader();
  8.   }
  9.  
  10.   function setLayout($layout) {
  11.     $this->layout = $layout;
  12.   }
  13.  
  14.   public function view($view, $data = null, $return = false) {
  15.     if ($this->layout == 'none')
  16.         $this->partial($view, $data, $return);
  17.     else {
  18.                 $resultData['layoutContent'] = parent::view($view, $data, true);
  19.                 return parent::view('layouts/' . $this->layout, $resultData, $return);
  20.     }
  21.   }
  22.  
  23.   public function partial($view, $data = null, $return = false) {
  24.     return parent::view($view, $data, $return);
  25.   }
  26. }
  27. ?>

Depois é so adicionar a lib Layout no config/autoload.php e criar o diretorio views/layouts
e o arquivo application.php com o template desejado.

Exemplo (views/layouts/application.php):

Teste

//header

<?php echo $layoutContent; ?>

//footer

 

local do css

Amigão..
sou novo no codeigniter tb e estou apanhando um pouquinho pra saber onde colocar as pasta do css..
por exemplo..

estou colocando ela no diretorio raiz.. blz..
chamo ela por esse endereço...
// href="css/main.css" type="text/css" //

dessa forma quando acesso a pagina principal (pelo endereço exemplo: http://localhost/ci/) que configurei lah routers.php funciona blz..
mas quando acesso as outras views pelo endereço completo (por exemplo: http://localhost/ci/main/)
ele não encontra o diretorio css e naum carrega as folhas de estilo..
como vc se organiza aí?

brigadão..

CSS

Amigo se você estiver usando o .htaccess da codeigniter pra ocultar
o index.php edite ele para:

  1. RewriteEngine on
  2. RewriteCond $1 !(index\.php|img|robots\.txt|css|js|favicon\.ico)
  3. RewriteRule ^(.*)$ index.php/$1 [L]

Feito isso você pode adicionar a pagina completa ao link do css.

Exemplo:

  1. <link type="text/css" rel="stylesheet" href="http://127.0.0.1/layouts/style.css" />