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

ERRO COM VALIDATION REQUEST

Eu estou tentando usar o validation através da criação da pasta Requests para apenas importar ela no meu PordutoController,eu fiz isso...mas está dando o seguinte erro quando eu clico em "adicionar" na minha página de cadastro :

Class estoque\Http\Requests\ProdutoRequest does not exist

Eu criei uma pasta chamada "requests",a qual ficou dentro da pasta "Http",mas parece que o navegador não está reconhecendo,não sei...não to entendendo o erro

ProdutoRequest:

<?php

namespace estoque\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ProdutosRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'nome'=>'required|max:100',
            'descricao'=>'required|max:255',
            'valor'=>'required|numeric',
            'quantidade'=>'required|numeric'

        ];
    }
}

ProdutoController:

<?php

namespace estoque\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Request;
use estoque\Produto;
use estoque\Http\Requests\ProdutoRequest;


class ProdutoController extends Controller
{

    public function lista(){

        $produtos = Produto::all();
        return  view('produto.listagem')->with('produtos', $produtos);
    }

          public function mostra($id){
                $resposta = Produto::find($id);
                if(empty($resposta))
                {
                    return "Esse produto não existe";
                }
                return view('produto.detalhes')->with('p', $resposta);
        }

        public function novo(){
            return view('produto.formulario');
        }

        public function adiciona(ProdutoRequest $request){
          Produto::create($request::all());
          return redirect()
            ->action('ProdutoController@lista')
            ->withInput(Request::only('nome'));
        }

        public function remove($id){
            $produto=Produto::find($id);
            $produto->delete();
            return redirect()->action('ProdutoController@lista');
        }

        public function altera($id){
            $produtos=Produto::find($id);
            return view('produto.formularioalterar')->with('produtos',$produtos);
        }

        public function alteracao($id){
            $params = Request::all();
            $produto = Produto::find($id);
            $produto->update($params);
            return redirect()->action('ProdutoController@lista')->with('message', "Produto alterado com sucesso");
        }



}

Link do meu projeto completo até agora:

https://github.com/victornunes139/projeto

4 respostas

Talvez o erro seja só pelo erro de digitação, o nome do classe é ProdutosRequest, e na função adiciona, vc esta chamando ProdutoRequest, sem o "S" do Produtos. Espero ter ajudado.

class ProdutosRequest extends FormRequest

public function adiciona(ProdutoRequest $request){ Produto::create($request::all()); return redirect() ->action('ProdutoController@lista') ->withInput(Request::only('nome')); }

Eu coloquei o "s" que faltava na função "ADICIONA",mas ainda da esse erro:

Class estoque\Http\Controllers\ProdutosRequest does not exist

Você mudou la no Use do ProdutoController tbm ?

la tbm estava errado, sem o s.

solução!

Exato,eu mudei agora o nome de todo mundo para "ProdutosRequest",tanto o nome da função quanto do arquivo,para eu não ter mais o problema com o "s",mas esse erro continua aparecendo,suspeito de eu poder estar errando nos "use"...mas não sei

ProdutoController:

<?php

namespace estoque\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Request;
use estoque\Produto;
use app\Http\Requests\ProdutosRequest;


class ProdutoController extends Controller
{

    public function lista(){

        $produtos = Produto::all();
        return  view('produto.listagem')->with('produtos', $produtos);
    }

          public function mostra($id){
                $resposta = Produto::find($id);
                if(empty($resposta))
                {
                    return "Esse produto não existe";
                }
                return view('produto.detalhes')->with('p', $resposta);
        }

        public function novo(){
            return view('produto.formulario');
        }

        public function adiciona(ProdutosRequest $request){
          Produto::create($request::all());
          return redirect()
            ->action('ProdutoController@lista')
            ->withInput(Request::only('nome'));
        }

        public function remove($id){
            $produto=Produto::find($id);
            $produto->delete();
            return redirect()->action('ProdutoController@lista');
        }

        public function altera($id){
            $produtos=Produto::find($id);
            return view('produto.formularioalterar')->with('produtos',$produtos);
        }

        public function alteracao($id){
            $params = Request::all();
            $produto = Produto::find($id);
            $produto->update($params);
            return redirect()->action('ProdutoController@lista')->with('message', "Produto alterado com sucesso");
        }
}

ProdutosRequest:

<?php

namespace estoque\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ProdutosRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'nome' => 'required|max:100',
            'descricao' => 'required|max:255',
            'valor' => 'required|numeric',
            'quantidade' => 'required|numeric'

        ];
    }
}