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

Lista de séries não mostra nome

ná página que lista séries, simplismente os nomes delas não aparecem, fica o bloco dela, o botão de deletar, mas o nome não aparece, eu peguei o projeto da aula passada e só fiz as implemetações até o vídeo 1 da parte 2.

@extends('layout')

@section('cabecalho')
    Séries
@endsection

@section('conteudo')

    @if(!empty($mensagem))
        <div class="alert alert-success">
            {{ $mensagem }}
        </div>
    @endif

    <a href="{{ route('form_criar_serie') }}" class="btn btn-dark mb-2">Adicionar</a>

    <ul class="list-group">
        @foreach($series as $serie)
            <li class="list-group-item d-flex justify-content-between align-items-center">
                {{ $serie->nome }}
                <form method="post" action="/series/{{ $serie->id }}"
                      onsubmit="return confirm('Tem certeza que deseja remover {{ addslashes($serie->nome) }}?')">
                    @csrf
                    @method('DELETE')
                    <button class="btn btn-danger btn-sm">
                        <i class="far fa-trash-alt"></i>
                    </button>
                </form>
            </li>
        @endforeach
    </ul>
@endsection
<?php

namespace App\Http\Controllers;

use App\Http\Requests\SeriesFormRequest;
use App\Models\Serie;
use Illuminate\Http\Request;

class SeriesController extends Controller
{

    public function index(Request $request) {

        $series = serie::query()
            ->orderBy('nome')
            ->get();
        $mensagem = $request->session()->get('mensagem');

    return view('series.index', compact('series','mensagem'));
}
    public function create()
    {
        return view('series.create');
    }
    public function store(SeriesFormRequest $request)
    {
        $request->validate([
            'nome' => 'required|min:3'
        ]);
        $serie = Serie::create(['nome' => $request->nome]);
        $qtdTemporadas = $request->qtd_temporadas;
        for ($i = 1; $i <= $qtdTemporadas; $i++) {
            $temporada = $serie->temporadas()->create(['numero' => $i]);

            for ($j = 1; $j <= $request->ep_por_temporada; $j++) {
                $temporada->episodios()->create(['numero' => $j]);
            }
        }
        $request->session()
            ->flash(
                'mensagem',
                "Série {$serie->id} e duas temporadas e episódios criados com sucesso {$serie->nome}"
            );

        return redirect()->route('listar_series');
    }

    public function destroy (Request $request)
    {
        Serie::destroy($request->id);
        $request->session()
            ->flash(
                'mensagem',
                "Série removida com sucesso"
            );

        return redirect()->route('listar_series');
    }

}

Se eu pegar e dar um vardump em $series na função index, aparece todas as informações, nome, id, termporadas e episódios, mas gráficamente, não aparece!

2 respostas

Felipe,

Perfeito, você verificou que no Controller esta trazendo $series, faça a verificação se $series esta sendo passado para a View. No começo do arquivo series/index.blade.php, repita um comando de dump:

{{ dd($series) }}

@extends('layout')

@section('cabecalho')
Séries
@endsection

...

Para mim ao executar este comando (Dump and Die) no começo da view, me retorna:

Collection {#244 ▼
  #items: array:2 [▼
    0 => Serie {#245 ▶}
    1 => Serie {#246 ▶}
  ]
}

Dai consigo expandir uma das Series, e observar em Attributes o "nome" e verificar que o dado esta chegando na View.

solução!

Descobri o problema no dia mesmo, o problema era a declaração do atributo nome na classe Serie, eu vi que o professor tinha colocado na transcrição e fiz igual, mas depois tirei e deu certo, obrigado pela resposta.