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

Duvida Update Laravel

Ola, eu estou com duvida para fazer Update no sistema, utilizando o Eloquent. vou mandar o código do sistema para analise.

route.php

Route::get('/produtos', 'ProdutoController@lista');
Route::get('/produtos/mostra/{id}','ProdutoController@mostra')->where('id', '[0-9]+');
Route::get('/produtos/novo', 'ProdutoController@novo');
Route::post('/produtos/adiciona', 'ProdutoController@adiciona');
Route::get('/produtos/remove/{id}', 'ProdutoController@remove');
Route::get('/produtos/alterar/{id}', 'ProdutoController@alterar');
Route::post('/produtos/update', 'ProdutoController@update');

ProdutoController.php

<?php namespace estoque\Http\Controllers;

use estoque\Produto;
use Illuminate\Support\Facades\DB;
use Request;
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(){
        $params = Request::all();
        Produto::create($params);

        return redirect('/produtos')->withInput(Request::only('nome'));
    }

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

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

    public function update($id){
        $produto = Produto::find($id);
        $params = Request::all();// carrega informações digitadas na view
        $produto->update($params);

        return redirect()->action('ProdutoController@lista')->withInput(Request::only('nomeAlt'));
    }
}

alterar.blade.php

@extends('layout.principal')
@section('conteudo')

    <h1>Novo produto</h1>

    <form action="/produtos/update" method="post">
        <input type="hidden" name="_token" value="{{{ csrf_token() }}}" />

        <div class="form-group">
            <label>Nome</label>
            <input name="nome" class="form-control" value="{{$p->nome}}">
        </div>
        <div class="form-group">
            <label>Valor</label>
            <input name="valor" class="form-control" value="{{$p->valor}}">
        </div>
        <div class="form-group">
            <label>Quantidade</label>
            <input name="quantidade" type="number" class="form-control" value="{{$p->quantidade}}">
        </div>
        <div class="form-group">
            <label>Descricao</label>
            <textarea name="descricao" class="form-control">{{$p->descricao}}</textarea>
        </div>
        <button type="submit" class="btn btn-success">Alterar</button>
    </form>

@stop
4 respostas

quando tento fazer o update da o seguinte erro:

ErrorException in ProdutoController.php line 49:
Missing argument 1 for estoque\Http\Controllers\ProdutoController::update()

Consegui verificar o por que do erro, ele não está conseguindo passar o $id como parâmetro. Alguém saberia me dizer o por que ?

solução!

Erro encontrado e solucionado.

O que éra?