Layouts
Layouts no Edge permitem que você defina o layout principal para suas páginas e então substitua seções específicas conforme necessário.
Exemplo básico
Vamos criar uma página da web padrão usando layouts.
1. Crie a seguinte estrutura de arquivo
.
├── views
│ ├── layouts
│ │ └── main.edge
│ └── home.edge
2. Cole a seguinte marcação no arquivo de layout.
edge
<!-- resources/views/layouts/main.edge -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ title }}</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.1/css/bulma.min.css">
</head>
<body>
<nav class="navbar is-dark" role="navigation" aria-label="main navigation">
</nav>
@!section('body')
<footer class="footer">
</footer>
</body>
</html>
3. Cole a seguinte marcação no arquivo resources/views/home.edge
.
edge
<!-- resources/views/home.edge -->
@layout('layouts/main')
@set('title', 'Home page')
@section('body')
<section class="hero is-warning">
<div class="hero-body">
<p class="title">
Title
</p>
<p class="subtitle">
Subtitle
</p>
</div>
</section>
@end
4. Renderize a visualização, e você terminará com o seguinte resultado
A tag layout
A tag layout é usada para definir o layout para um determinado modelo.
- Deve aparecer na primeira linha do modelo. Caso contrário, será ignorado.
- Você só pode usar um layout por modelo
- O nome do layout deve ser estático e não pode ser definido usando variáveis de tempo de execução.
A tag section
A tag section é um espaço reservado exposto por um layout para injetar conteúdo. Um layout pode definir quantas seções quiser, e o modelo pai pode substituí-las quando necessário.
No exemplo a seguir, o layout renderiza as tags scripts dentro da seção scripts
. Isso permite que todas as páginas usem esses scripts ou os substituam completamente redefinindo a mesma seção com diferentes tags script.
Layout
edge
@section('scripts')
<script src="./vendor.js"></script>
<script src="./app.js"></script>
@end
Modelo pai substituindo tudo
edge
@section('scripts')
<script src="./vendor.js"></script>
<script src="./admin.js"></script>
@end
Modelo pai anexando a scripts existentes
edge
@section('scripts')
@super {{-- Super means inherit --}}
<script src="./autocomplete.js"></script>
@end
- O nome de todas as tags section deve ser exclusivo.
- O nome da seção deve ser estático e não pode ser definido usando variáveis de tempo de execução.
- Você não pode ter seções aninhadas.
- Todas as seções devem estar no nível superior. Essa restrição é semelhante às exportações ESM em JavaScript, onde cada declaração
export
está no nível superior e é única.