1
resposta

[Bug] layout.blade.php - {{ $title }}

Criei a pasta "components" e o arquivo "layout.blade.php" dentro desse diretório e escrevi o código:

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

Porém, quando fui alterar o conteúdo da tag title para ''{{ $title }}'' no meu navegor apareceu um erro dizendo que a variável "$title" não foi definida. Aqui está código do arquivo index.blade.php

    <!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ $title }}</title>
</head>
<body>
    <h1>{{ $title }}</h1>
{{ $slot }}
</body>
</html>
1 resposta

Olá Eliam! Tudo certo?

Pelo que você descreveu, parece que o problema está na forma como você está passando o título para o componente layout.blade.php. Vamos revisar o seu código e a estrutura para garantir que tudo está correto.

Primeiro, certifique-se de que o arquivo layout.blade.php dentro da pasta components está assim:

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ $title }}</title>
</head>
<body>
    <h1>{{ $title }}</h1>
    {{ $slot }}
</body>
</html>

E no seu arquivo onde você está utilizando o componente, deve estar assim:

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

Certifique-se também de que você está passando a variável $series corretamente para a view. No seu controller, deve estar algo assim:

public function index()
{
    $series = ['Série 1', 'Série 2', 'Série 3']; // Exemplo de dados
    return view('series.index', ['series' => $series]);
}

Se tudo estiver correto e ainda assim o erro persistir, verifique se você criou o componente layout corretamente com o comando Artisan, pois ele pode ajudar a configurar tudo automaticamente:

php artisan make:component Layout

Isso criará um arquivo Layout.php em app/View/Components e uma view em resources/views/components/layout.blade.php. O conteúdo do arquivo Layout.php deve ser algo como:

namespace App\View\Components;

use Illuminate\View\Component;

class Layout extends Component
{
    public $title;

    public function __construct($title)
    {
        $this->title = $title;
    }

    public function render()
    {
        return view('components.layout');
    }
}

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.