Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvida Blade

Boa noite!

Estou fazendo a formação Laravel. Sendo assim, além das aulas, consulto o site oficial do Laravel. Porém, fiquei com as seguintes dúvidas:

Dúvida 01

Verifiquei que no arquivo mestre de layout, defino vários @yield e nas views, defino, nas @section, o conteúdo a ser substituído.

Exemplo: a) Arquivo mestre

b) Na view @section('title', 'Page Title')

Assim, entendi que dessa forma posso utilizar a combinação de @yield e @section para substituir vários conteúdos.

Todavia, quando assistir à aula que trata de Blade, a diretiva Slot foi utilizada para substituir um único conteúdo no arquivo mestre. Assim, qual a diferença entre @yield e Slot?

Dúvida 02

Não ficou claro para mim a diferença entre @section @parent @child @yield @show. Achei que @section fosse utilizada apenas na view. Todavia, no site do Laravel tem exemplo de seu uso no próprio arquivo mestre. Dessa forma, qual a diferença dessas diretivas e para que servem?

Link do site oficial: https://laravel-com.translate.goog/docs/5.5/blade?_x_tr_sl=en&_x_tr_tl=pt&_x_tr_hl=pt-BR&_x_tr_pto=sc#components-and-slots

Muito obrigado desde já!

Att., Marcelo

2 respostas

Olá Marcelo!

Sobre a primeira dúvida:

O @yield = bloco para sobrepor conteúdos de templates para layouts. Ideal para terminar blocos nos layouts, em que podemos inserir conteúdos HTML, javascripts, css, etc.

O @slot = diretiva que faz parte de componentes que se pode criar com o Blade. Podemos escolher um lugar no componente que será renderizado um conteúdo. O componente é um bloco de código reutilizável.

O componente não tem restrição de uso, já o yield é sempre do template para o layout.

Sobre a segunda dúvida Todas são diretivas que são usadas para definir e exibir conteúdo nas views.

@section: A diretiva @section é usada para definir uma seção de conteúdo em uma view. Ela recebe dois argumentos: o nome da seção e o conteúdo que será exibido nessa seção. Por exemplo:

@section('titulo', 'Minha Página')

Essa diretiva define uma seção chamada "titulo" com o conteúdo "Minha Página". Essa seção pode ser exibida em outra parte da mesma view ou em views diferentes.

**@parent: ** A diretiva @parent é usada dentro de uma seção para exibir o conteúdo definido em uma seção pai. Por exemplo:

@section('conteudo')
    <p>Conteúdo da seção.</p>
    @parent
@endsection

Nesse caso, a diretiva @parent é usada para exibir o conteúdo da seção pai chamada "conteudo" antes do conteúdo atual. Isso permite que você adicione conteúdo adicional à seção sem substituir completamente o conteúdo da seção pai.

@child: A diretiva @child não é nativa do Laravel. É um exemplo de uma diretiva personalizada que pode ser definida por você ou por um pacote de terceiros. Normalmente, é usada como o oposto do @parent e serve para exibir o conteúdo definido em uma seção filho. No entanto, sua implementação pode variar dependendo do contexto em que é usado.

@yield: A diretiva @yield é usada para exibir o conteúdo de uma seção em uma vista. Ela recebe o nome da seção como argumento. Por exemplo:

<title>@yield('titulo')</title>

Essa diretiva exibirá o conteúdo da seção chamada "titulo" no lugar em que @yield('titulo') for usado.

@show: A diretiva @show é uma combinação das diretivas @yield e @section. Ela é usada para definir e exibir uma seção ao mesmo tempo. Por exemplo:

@section('titulo')
    <title>Minha Página</title>
@show

Nesse caso, a diretiva @show exibirá o conteúdo da seção "titulo" e, ao mesmo tempo, definirá o título da página como "Minha Página".

Espero ter ajudado! Grande Abraço! Bons Estudos!

solução!

Muito obrigado pelas informações!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software