3. Layouts

Não repita você mesmo

Cada módulo necessita de um arquivo dentro de views para ser o HTML padrão para todas as ações, ou seja, todos os scripts .phtml serão renderizados dentro deste arquivo. Ele é chamado layout porquê ele contém a parte do HTML que se repete em todas as páginas do sistema. Não é necessário fazer nenhum include ou require para incluir este arquivo, o SuitUp faz isso para você automaticamente.

Onde você incluir no seu HTML a variável <?php echo $content; ?> é onde será renderizado (impresso) o conteúdo da view.

O layout

Arquivo: ModuleDefault/views/layout.phtml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <!-- ... -->
    </head>
    <body>

        <nav></nav>
        <div class="sidebar"></div>
        <div class="content">

            <!-- Eh aqui que o conteudo sera impresso -->
            <?php echo $content; ?>
        </div>

        <!-- Monitoramento de consultas SQL -->
        <?php echo $queryLog; ?>
    </body>
</html>

Se voce habilitou o [[monitoramento de SQL|5.2 Monitoramento de SQL]] indique no layout onde quer que esse HTML de monitoramento seja injetado, geralmente no final da página antes da tag de fechamento </body>.

Mensagens de layout

Dentro de qualquer ação de qualquer controlador você pode chamar o método $this->addMsg("mensagem", MsgType::SUCCESS, true); para mensagens que vão para o layout depois de um redirecionamento ou $this->addMsg("mensagem", MsgType::SUCCESS); para mensagens que vão para o layout diretamente.

Para isso funcionar adicione estas linhas em qualquer lugar de seu layout.phtml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<!-- Mensagens do sistema -->
<?php foreach ($layoutMessages as $type => $msgs): ?>
    <div class="alert alert-<?php echo $type; ?>">
        <a href="#" class="close">&times;</a>
        <?php foreach ($msgs as $msg): ?>
            <p><i class="fa fa-check"></i> <?php echo $msg; ?></p>
        <?php endforeach; ?>
    </div>
<?php endforeach; ?>
<!-- /Mensagens do sistema -->

Veja mais sobre este assunto aqui.