Ao dar o var_dump($id), quando vou inserir ele já puxa o id certo!
string(2) "62"
Você me pediu pra ver mais o código...
Controller:
class ProdutoController extends Controller
{
public function lista() {
$produtos = Produto::all(); //selecionando todos os dados de nosso banco
//if(view()->exists('listagem')) { //se a pagina listagem existe...
return view('produto/listagem', ['produtos' => $produtos]); //retorna o nome da pagina que queremos abrir
//}
}
//a função mostra($id) coleta dados da tabela através do id do elemento, colocando em um vetor p todos os dados
public function mostra($id) {
$produtos = Produto::find($id);
if (empty($produtos)) { //caso o dados seja vazio ...
return "Esse produto não existe!"; // informe o erro
}
//retornando a view detalhes como o array p com o conteudo de $produto
return view('produto/detalhes')->with('p', $produtos);
}
public function novo() {
//retornando a pagina de formuláio para inserir o produto
return view('produto/formulario');
}
/* COLETA DADOS DA VIEW E ADICIONA DADOS NO BANCO */
public function adiciona() {
//pode ser usado $all = Request::all();
/* A partir daqui recolhemos os dados vindos do formulário */
Produto::create(Request::all()); //com o metodo create() não precisamos usar o metodo save()
//salva os paramentros inseridos no formulario na tabela (BD)
return redirect()
// action('ProdutoController@lista') irá redirecionar para a listagem de produtos apos incluir
->action('ProdutoController@lista')
//Request::only('nome') refere-se ao nome do prodruto que será passado para a view apos inclui-lo
->withInput(Request::only('nome'));
}
public function remove($id) {
$produtos = Produto::find($id);
$produtos->delete();
return redirect()
->action('ProdutoController@lista');
}
public function altera($id) {
var_dump($id);
die();
$produtos = Produto::find($id);
$produtos->nome = Request::input('nome');
$produtos->valor = Request::input('valor');
$produtos->descricao = Request::input('descricao');
$produtos->quantidade = Request::input('quantidade');
$produtos->save();
return redirect()
->action('ProdutoController@novo');
}
//esta função mostra um arquivo json com todos os dados inserido na tabela Produtos
public function listaJson() {
$produtos = Produto::all(); //selecionando todos os dados de nosso banco
return response()->json($produtos);
}
}
Rotas:
/* Route::get('path', função com a resposta) */
Route::get('/', function () { // "/" é a pagina default do projeto
return '<h1>Primero projeto com Laravel</h1>';
});
Route::get('/produtos', 'ProdutoController@lista');
/* Sempre devemos afirmar para a rota que nosso id será sempre um número */
Route::get('/produtos/mostra/{id}', 'ProdutoController@mostra')->where('id', '[0-9]+');
/* Rota que leva para a view do formulario */
Route::get('/produtos/novo', 'ProdutoController@novo');
Route::post('/produtos/adiciona', 'ProdutoController@adiciona');
Route::get('/produtos/json', 'ProdutoController@listaJson');
//Rota para a função que remove produtos - public function remove()
Route::get('/produtos/remove/{id}', 'ProdutoController@remove');
Route::get('/produtos/altera/{id}', 'ProdutoController@altera');
View:
...
<td>
<!-- href esta referenciando a função altera($id) da classe ProdutoController -->
<a href="{{action('ProdutoController@altera', $p->id )}}"> Alterar </a>
</td>
...