1
resposta

Trying to access array offset on value of type null

Trying to access array offset on value of type null

Estou com este erro

Método store da Controller

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

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

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

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

SeriesCreated

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      $episodiosPorTemporada,
)
{}

/**
 * Build the message.
 *
 * @return $this
 */
public function build(): static
{
    return $this->markdown('mail.series-created')
        ->with([
            'nomeSerie'             => $this->nomeSerie,
            'idSerie'               => $this->idSerie,
            'qtdTemporadas'         => $this->qtdTemporadas,
            'episodiosPorTemporada' => $this->episodiosPorTemporada,
        ]);
}

}

A serie salva no banco da erro na Controller Na linha Mail::to($request->user())->send($email);

1 resposta

Olá, Diego! Tudo bem?

Esse erro "Trying to access array offset on value of type null" geralmente ocorre quando você tenta acessar um índice de um array que é null. No seu caso, parece que o problema está relacionado ao $request->user().

Vamos analisar alguns pontos para resolver isso:

  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 adicionar uma verificação para garantir que o usuário está logado:

    if (auth()->check()) {
        $user = $request->user();
    } else {
        // Lidar com o caso onde o usuário não está autenticado
        return redirect()->route('login')->with('error', 'Você precisa estar logado para adicionar uma série.');
    }
    
  2. Verifique se $request->user() não é null: Mesmo com a verificação de autenticação, é bom garantir que $request->user() não seja null antes de enviar o e-mail:

    $user = $request->user();
    if ($user) {
        Mail::to($user)->send($email);
    } else {
        // Lidar com o caso onde o usuário é `null`
        return redirect()->route('series.index')->with('error', 'Erro ao enviar e-mail: usuário não encontrado.');
    }
    
  3. Verifique se os dados do formulário estão sendo enviados corretamente: Certifique-se de que os campos seasonsQty e episodesPerSeason estão presentes no seu formulário e estão sendo enviados corretamente para o método store.

    $validatedData = $request->validate([
        'seasonsQty' => 'required|integer',
        'episodesPerSeason' => 'required|integer',
    ]);
    

Isso ajudará a identificar se o $request->user() está realmente retornando null.

Espero ter ajudado e bons estudos!

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