Don't you speak portuguese? Translate this site with Google Translator

Pensamento do Dia

A única maneira de ter um amigo é ser um. (Ralph Waldo Emerson)

9.2 - Layout

9.2 – Layout

A grande glória da vida não está em nunca cair, mas em se levantar a cada vez que cair.

Nelson Mandela

Layout contém código de apresentação que é incorporado na view. Qualquer coisa que você deseje ver em todas as suas views deve ser colocada em um layout.

No CakePHP 3 o arquivo default de layout fica em

src\Template\Layout\default.ctp

Se você deseja mudar a aparência da sua aplicação (cores, fontes e posições, imagens, etc) então o layout é o lugar para mexer.

Outros arquivos de layout devem ser criados em

src\Template\Layout\

Aqui está o layout default.ctp do CakePKP 3.8.0 com leves modificações:

<!DOCTYPE html>
<html>
<head>
    <?= $this->Html->charset() ?>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>
        <?= $this->fetch('title') ?>
    </title>
    <?= $this->Html->meta('icon') ?>

    <?= $this->Html->css('base.css') ?>
    <?= $this->Html->css('style.css') ?>

    <?= $this->fetch('meta') ?>
    <?= $this->fetch('css') ?>
    <?= $this->fetch('script') ?>
</head>
<body>
    <nav class="top-bar expanded" data-topbar role="navigation">
        <ul class="title-area large-3 medium-4 columns">
            <li class="name">
                <h1><a href="/portal/"><?= $this->fetch('title') ?></a></h1>
            </li>
        </ul>
    </nav>
    <?= $this->Flash->render() ?>
    <div class="container clearfix">
        <?= $this->fetch('content') ?>
    </div>
    <footer>
    </footer>
</body>
</html>

Podemos criar tantos layouts quantos desejarmos. Apenas os crie em:

src\Template\Layout\

 

E chame no action respectivo com:

$this->viewBuilder()->layout('admin');

 

Na view use:

$this->layout = 'loggedin';

 

Veja no plugin admin-br o uso de dois layouts e sua chamada no AppController.

Carregando num controller

public function initialize()

{

$this-viewBuilder()->setLayout('admin');

}

 

Ou

if($loguser == 'user' || $loguser == 'manager'){

$this->viewBuilder()->setLayout('CakeAclBr.default');

}else{

$this->viewBuilder()->setLayout('CakeAclBr.admin');

}

Layout - contém código de apresentação da view. Tudo que vemos nas views está incorporado num layout.

 

Estão em src/Template/Layout

O cake já vem com um layout padrão, que é o default.ctp.

Como setar outro layout no controller. Exemplo admin.ctp:

public function initialize()

{

$this-viewBuilder()-setLayout('admin');

// Para plugin

// $this-viewBuilder()-setLayout('AdminBr.admin');

}

Detalhes

https://book.cakephp.org/3.0/en/views.html#layouts

Comments fornecido por CComment

Novo Testamento

E em nenhum outro há salvação, porque também debaixo do céu nenhum outro nome há, dado entre os homens, pelo qual devamos ser salvos.
(At, 4:12)

Rotas no Mapa do Google

© 2015 Ribamar FS. All Rights Reserved. Designed By JoomShaper