[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Luiz Paduan
Criador Luiz Paduan 28/04/2021

Tentei injetar o Request no construtor e não funciona. Não entendi pq!!!

Manager Carlos Ferreira 28/04/2021

Olá, Luiz!
Tudo bem?

Me mostra o código que te ajudo a identificar onde errou.

Carlos Ferreira
Criador Luiz Paduan 28/04/2021

Opa. Tudo certo e vc? Eu não formulei a pergunta direito, pois achei que isso era uma particularidade do laravel.
Ao invés de ficar injetando em toda função que eu preciso, seria melhor injetar o StoreUpdatePlanoRequest no construtor. Procurei alguma coisa no google pra ver se tinha alguma explicação, mas não encontrei. Obrigado!

Segue:

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Http\Requests\StoreUpdatePlanoRequest;
use App\Models\Plano;
use Illuminate\Http\Request;

class PlanoController extends Controller
{
    private $planoRepository;

    private $storeUpdatePlanoRequest;

    public function __construct(
        Plano $plano,
        StoreUpdatePlanoRequest $storeUpdatePlanoRequest
    )
    {
        $this->planoRepository = $plano;
        $this->storeUpdatePlanoRequest = $storeUpdatePlanoRequest;
    }
   
    public function store()
    {
        $this->planoRepository->create($this->storeUpdatePlanoRequest->all());

        return redirect()->route('planos.index');
    }

    

    public function update($url)
    {
        $plano = $this->planoRepository->where('url', $url)->first();

        if (!$plano) {
            return redirect()->back();
        }

        $plano->update($this->storeUpdatePlanoRequest->all());

        return redirect()->route('planos.index');
    }
}
Luiz Paduan
Manager Carlos Ferreira 28/04/2021

O Form Request não pode mesmo ser injetado no construtor, porque a dinâmica dele é diferente, assim que cria o objeto dele automaticamente já valido, portanto, ele deve ser injeto diretamente no método que vai usar ele (e fica até mais organizado).

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!