Tutorial Laravel para iniciantes - Parte 08 [Entendendo view com @extends, @yield e @section]

Nesse post um pouco mais teórico vamos falar sobre extends(), yield() e section(), explicarei como cada uma dessas diretrizes funcionam alguns exemplos de uso, isso dando continuidade ao post anterior!



Glossário:


app.blade.php 

O app.blade.php é responsável por elementos comuns nas páginas, como cabeçalho, mensagens de erro e menus, como vimos o Tutorial anterior quando usamos o comando "php artisan make:auth", automaticamente já foram criadas algumas view e caso tenha seguido o post anterior já teremos o app.blade.php já criado no diretório resources/views/layouts/.
Agora vamos abrir as nossas view e entender melhor! Vamos abri o app.blade.php:
Como já foi criado tutorial anterior não alteraremos nada, caso não tenha criado crie o app.blade.php e cole esse conteúdo a cima.


@yield('') 

A diretiva @yield('') é usada para exibir o conteúdo de uma determinada sessão. Uma outra maneira de explicar, quando usamos a @yield('') seria algo parecido com echo "$content"; (Um exemplo grotesco onde $content seria algum conteúdo html).

@section('')

Quando declarado um valor em @section('') ele basicamente cria uma instância de valor para que posa ser exibido em @yield('').

@extends('')

Define uma uma view filho, isso é, quando declaramos alguma @section('')definimos e queremos relacionar a alguma view, declaramos ela como @extends('') dessa view em questão.

Como no exemplo anterior acabamos atropelando essas explicações nesse post irei explicar um pouco melhor sobre section(), extends() e yield();
Vamos a explicações:

Criei 3 arquivos, para criamos um ambiente mais completo com exclusão do post anterior. Vamos falar sobre individualmente e apontando cada diretiva.

app.blade.php

Aqui basicamente criamos o corpo de nossa aplicação, por exemplo, temos toda a estrutura da página, com exclusão do menu, corpo e titulo, os qual normalmente variam de uma página a outra. Aqui temos as seguintes diretivas; @yield(''), @section('') e @show, o que elas estão fazendo aqui ?

@yield(''); ele é responsável por imprimir os valores, imagine o seguinte o @yield('title') se definirmos uma outra pagina o section('title', 'Titulo da Pagina') ele irá imprimir esse valor na @yield('title').

@section(''); é aqui que definimos campos de nossas view, imagine o seguinte, preciso exibir um conteúdo dinâmico de uma página, mas não seria muito bom reescrevermos todo o html de uma página para cada página que criarmos, é aqui que o @section() entra, vamos criar um menu, pois na maioria das páginas ele se repete, então criamos o:
No exemplo a cima criamos uma @section('menu') que irá receber um menu de exemplo, agora como iremos imprimir esse conteúdo em nosso caso, basta usamos o @yield('menu') para exibirmos esse menu, assim limitamos a necessidade de editarmos apenas um menu para toda a nossa aplicação.

@extends(); define a qual view o arquivo.blade.php se estende, isso é, quando usamos o @extends('layouts.app') definimos que o view em si é uma extensão do arquivo declarado no @extends() no nosso exemplo ao chamarmos o diretório layouts e o view app.blade.php, um outro exemplo, @extends('layouts.teste'), isso é, estendemos o view teste.blade.php.

Esse post será o último dessa linha focado na criação de uma página de contato, agora irei estudar mais um pouco e criar novos posts mais completos sobre Laravel, atualmente estou lendo o livro chamado Laravel para Ninjas o qual também irei fazer uma resenha assim que terminar a leitura. E vamos aos estudos pessoal!

Se vocês gostaram desse Post não deixe de compartilhar com seus amigos!!!
E para não perder nenhuma novidade nos sigam nas redes sociais:
Twitter: @Bulfaitelo
Share on Google Plus

About Thiago Rodrigues

Formado em Sistema de Informação pela Faculdade Paraíso
O que falar de mim? Não á muito, mas garanto que meu objetivo aqui é somente ajudar!
Atualmente desenvolvendo o projeto do QiEstudo.

Comentários
0 Comentários

0 comentários:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.