3
respostas

Criar slots dentro de uma view

Eu tenho uma pequena dúvida aqui...

Normalmente quando eu crio um projeto em php, eu costumo separar o arquivo de base em algumas partes e fazer o require/include, dependendo da necessidade.

Por exemplo, na index.php seria mais ou menos dessa forma:

<head>
            <meta charset="utf-8" />
            <meta http-equiv="X-UA-Compatible" content="IE=edge" />
            <meta name="viewport" content="width=device-width, initial-scale=1" />
            <title>Traduções BR - Painel de Vídeos</title>
            <!-- theme meta -->
            <meta name="theme-name" content="mono" />
            <?php require SITE_ROOT . "\includes\bibliotecas.php" ?>
        </head>

Onde o require seria para os arquivos css, js e fontes do Google, onde daí pra frente, eu iria importar componentes externos viarequire à medida que fosse necessitando, como por exemplo: Menus, tabelas, gráficos e rodapé.

Um grande problema que enfrentei é que ficar complicado a medida que o projeto cresce para organizar isso de uma maneira fácil. Então, com tudo isso em mente, eu poderia fazer um "require" dentro de um "require", ou seja, dentro do index.blade.php, eu poderia criar um slot dentro dele para importar outra coisa, como por exemplo um gráfico ou tabela?

Mais ou menos do tipo:

<x-layout title='Séries'>
    <ul>
        @foreach ($series as $serie)
            <li>{{ $serie }}</li>
        @endforeach
    </ul>
    {{$slot}}
</x-layout>

E aí importar algo pra dentro deste slot em específico? Sei que pode parecer um pouco confuso, mas eu acredito que seja mais simples do que parece

3 respostas

Elisame, honestamente não entendi sua dúvida. Você consegue reformular, por favor?

Basicamente o que queria fazer é, dentro do layout base do meu projeto, eu criar vários slots e/ou criar slots dentro de outros componentes. Por exemplo:

<div id="main">
            <header class="mb-3">
                <a href="#" class="burger-btn d-block d-xl-none">
                    <i class="bi bi-justify fs-3"></i>
                </a>
            </header>

            {{ $slot }}

Aí, abaixo desse {{ $slot }}, criar um {{ $slot2 }}, {{ $slot3 }} e etc. E também dentro de um componente, tipo:

<x-layout title="Mensagens">
    <div class="page-heading email-application">
        <div class="page-title">
            <div class="row">
                <div class="col-12 col-md-6 order-md-1 order-last">
                    <h3>Mensagens</h3>
                    <p class="text-subtitle text-muted">
                        Nesta página você poderá gerenciar as mensagens que recebeu através do formulário de contato.
                    </p>
                </div>
                {{ $slotMenuDiferente }}
  <x-layout/>

Teria alguma forma de eu fazer isso no Laravel 10? Espero que tenha ficado mais claro... Como tô aprendendo ainda o Laravel, ainda não sei explicar o conceito

Não fez muito sentido não. Como múltiplos slots seriam preenchidos?

Será que não é isso que você quer? https://laravel.com/docs/10.x/blade#including-subviews