Como o código dos dois formulários, tanto de adicionar como o de alterar se repetem, isolei a parte que se repete em um único arquivo: formulario-base.blade.php O formulário base não está carregando dentro dos tipos adicionar e alterar. Só aparece o título e o botão submit. Alguém sabe como corrigir?
formulario-base.blade.php
@extends('produtos/altera')
@extends('produtos/formulario')
@section('conteudo')
<tr>
<td>Nome:</td>
<td><input class="form-control" type="text" name="nome" required value="{{$produto->nome}}"></td>
</tr>
<tr>
<td>Valor:</td>
<td><input class="form-control" type="number" step="0.10" name="valor" required value="{{$produto->valor}}"> </td>
</tr>
<tr>
<td>Descrição:</td>
<td><input class="form-control" type="text" name="descricao" required value="{{$produto->descricao}}"></td>
</tr>
<tr>
<td>Quantidade:</td>
<td><input class="form-control" type="number" name="quantidade" step="0" required value="{{$produto->quantidade}}"></td> <!-- if condicional -->
</tr>
<tr>
<td>Situação:</td>
<td><input type="checkbox" name="situacao" value="true" {{$produto->situacao}} >Ativo</td>
</tr>
<tr>
<td>Tamanho:</td>
<td><input class="form-control" type="text" name="tamanho" required value="{{$produto->quantidade}}"></td>
</tr>
<tr>
<td>Categoria:</td>
<td>
<select name="categoria" class="form-control">
@foreach($categorias as $categ)
<?php
$essaEhACategoria = $produto->categoria == $categ->id;
$selecao = $essaEhACategoria ? "selected= 'selected'" :"";
?>
<option value="{{$categ->id}}" {{$selecao}}>
{{$categ->nome}}
</option>
@endforeach
</select>
</td>
</tr>
@stop
formulario.blade.php Adiciona
@extends('layout/principal')
@section('conteudo')
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
<section class="intro">
<div class="container">
<div class="principal">
<h1>Adiciona Produto</h1>
<form action="/produtos/adiciona" method="post"> <!-- Passa os parametros atraves de blocos não pela URI(barra de navegação) -->
<input value="{{ csrf_token()}}" type="hidden" name="_token">
<table class="table">
@yield('conteudo')
<tr>
<td>
<button class="btn btn-primary" type="submit">Cadastrar</button>
</td>
</tr>
</table>
</form>
</div>
</div>
</section>
</form>
@stop
altera-produto.blade.php
@extends('layout/principal')
@section('conteudo')
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
</div>
<?php
$selecao_usado = $produto->situacao ? "checked='checked'" : "";
$produto->situacao = $selecao_usado;
?>
<section class="intro">
<div class="container">
<div class="principal">
<h1>Adiciona Produto</h1>
<form action="/produtos/alterado" method="post"> <!-- Passa os parametros atraves de blocos não pela URI(barra de navegação) -->
<input value="{{ csrf_token()}}" type="hidden" name="_token">
<table class="table">
@yield('base')
<tr>
<td>
<button class="btn btn-primary" type="submit">Alterar</button>
</td>
</tr>
</table>
</form>
</div>
</div>
</section>
</form>
@stop
Controllers
public function formulario(){
$produto = new Produto();
$produto->nome = "";
$produto->valor = "";
$produto->descricao = "";
$produto->quantidade = "";
$produto->categoria = 1;
$produto->situacao = "";
$produto->tamanho = "";
$categorias = Categoria::all();
return view('produto/formulario')->withCategorias($categorias)->withProduto($produto);
}
public function adiciona(ProdutoRequest $request){
$produto = $request->all();
if ($produto->situacao == "checked='checked'"){
$produto->situacao = true;
} else {
$produto->situacao = false;
}
Produto::create($produto);
/*$params = Request::all();
$produto = new Produto($params);
$produto->save();*/
/*
return redirect('/produtos')->withInput();
return redirect('/produtos')->withInput(Request::except('senha'));
return redirect()->action('ProdutoController@lista')->withInput(Request::only('nome'));
*/
return redirect()->action('ProdutoController@lista')->withInput($request->only('nome'));
}
public function altera($id){
$produto = Produto::find($id);
$categorias = Categoria::all();
return redirect()->action('ProdutoController@altera')->withProduto($produto)->withCategorias($categorias);
}
public function alterado(){
$produto = Produto::findOrFail($id);
$produto->update($request->all());
return redirect()->action('ProdutosController@lista')->withInput($request->only('nome'));
}
Rotas
<?php
Route::get('/theme', 'ProdutoController@theme');
Route::get('/', 'ProdutoController@dashboard');
Route::get('/produtos', 'ProdutoController@lista');
Route::get('/produtos/mostra/{id}', 'ProdutoController@mostra')->where('id','[0-9]+');
Route::get('/produtos/remove/{id}', 'ProdutoController@remove')->where('id','[0-9]+');
Route::get('/produtos/altera/{id}', 'ProdutoController@altera')->where('id','[0-9]+');
Route::get('/produtos/alterado', 'ProdutoController@alterado');
Route::get('/produtos/formulario', 'ProdutoController@formulario');
Route::post('/produtos/adiciona', 'ProdutoController@adiciona');
Route::get('/produtos/json', 'ProdutoController@listaJson');
Route::get('/login','LoginController@form');
Route::get('home', 'HomeController@index');
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);