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

Estou com esse erro e não consigo resolver (Trying to access array offset on null)

Mesmo tipando os valores é retornado esse erro! estou usando o 8.3.9 (cli)

Mail::to($request->user())->send(new SeriesCreated(
            (string) $serie->nome,
            (int) $serie->id,
            (int) $request->seasonsQty,
            (int) $request->episodesPerSeason,
        ));

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class SeriesCreated extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct(
        public string $nomeSerie,
        public int $idserie,
        public int $qtdTemporadas,
        public int $episodioPorTemporadas
    ) {}

    /**
     * build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->markdown('mail.series-created');
    }

    /**
     * Get the message envelope.
     *
     * @return \Illuminate\Mail\Mailables\Envelope
     */
    public function envelope()
    {
        return new Envelope(
            subject: 'Series Created',
        );
    }

    /**
     * Get the message content definition.
     *
     * @return \Illuminate\Mail\Mailables\Content
     */
    // public function content()
    // {
    //     return new Content(
    //         view: 'view.name',
    //     );
    // }

    /**
     * Get the attachments for the message.
     *
     * @return array
     */
    public function attachments()
    {
        return [];
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá Xossy! Tudo bem?

O erro "Trying to access array offset on null" geralmente ocorre quando você tenta acessar um índice de um array que não existe ou é nulo. No seu caso, parece que o problema está relacionado com o $request->user() no método store do SeriesController.

Aqui estão algumas sugestões para resolver o problema:

  1. Verifique se o usuário está autenticado: Certifique-se de que o usuário está autenticado antes de tentar acessar $request->user(). Você pode usar o middleware auth para garantir isso.

  2. Verifique se o método user() está retornando um objeto válido: Adicione uma verificação para garantir que $request->user() não está retornando nulo.

Aqui está uma versão atualizada do seu método store com essas verificações:

public function store(SeriesFormRequest $request)
{
    $serie = $this->repository->add($request);

    $user = $request->user();
    if (!$user) {
        return redirect()->route('login')->withErrors('Você precisa estar logado para criar uma série.');
    }

    $email = new SeriesCreated(
        (string) $serie->nome,
        (int) $serie->id,
        (int) $request->seasonsQty,
        (int) $request->episodesPerSeason,
    );

    Mail::to($user)->send($email);

    return to_route('series.index')
        ->with('mensagem.sucesso', "Série '{$serie->nome}' adicionada com sucesso");
}

Além disso, certifique-se de que o método add do seu repositório está retornando um objeto $serie válido e que as propriedades nome, id, seasonsQty e episodesPerSeason estão todas corretamente definidas.

Espero ter ajudado e bons estudos!

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

Muito Obrigado pela ajuda, realmente era isso!