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

Exibir número da temporada e quantidade de episódios

Bom dia. Como acessar o número da temporada e a quantidade de episódios no cabeçalho do index da view de episódios? Na view de temporadas, o nome da Série é acessível por {{$serie->nome}}, contudo, o método index da TemporadasController foi construído de forma diferente do índex de EpisodiosController, e acredito que isso impossibilite que instrução semelhante seja utilizada na view de episódios, uma vez que obtenho um erro de undefined variable.

Para contextualizar, seguem os métodos index construídos em aula até este momento:

class TemporadasController extends Controller
{
    public function index(int $serieId)
    {
        $serie = Serie::find($serieId);
        $temporadas = $serie->temporadas;

        return view(
            'temporadas.index',
            compact('serie', 'temporadas')
        );
    }
}
class EpisodiosController extends Controller
{
    public function index(Temporada $temporada)
    {
        $episodios = $temporada->episodios;

        return view('episodios.index', compact('episodios'));
    }
}
2 respostas
solução!

Prezados, consegui resolver adicionando as variáveis temporadaNumeroe serieNome ao EpisodiosController, que ficou assim:

public function index(Temporada $temporada, Request $request)
    {
        return view('episodios.index', [
            'episodios' => $temporada->episodios,
            'temporadaId' => $temporada->id,
            'temporadaNumero' => $temporada->numero,
            'serieNome' => $temporada->serie->nome,
            'mensagem' => $request->session()->get('mensagem')
        ]);
    }

Olá Paulo,

Em cada episódio você pode acessar a sua temporada correspondente com $episodio->temporada e daí acessar qualquer informação da temporada, como o número por exemplo:

$episodio->temporada->numero

Importante lembrar que isso é a partir de um episódio individual, no início do index de episódios temos $episodios (com s no final) que é uma coleção de episódios.

Mas como já temos a temporada no controller seria mais simples passar $temporada para a view:

return view('episodios.index', compact('episodios', 'temporada'));

E assim acessar diretamente na view $temporada->numero onde você quiser.


Já para conseguir a quantidade de episódios é bem simples, a coleção $episodios já tem o método count() que traz o que você quer:

$episodios->count()

Espero ter ajudado, qualquer dúvida é só falar!