Problema com o @extends do blade

396 views
Skip to first unread message

junior fernandes de oliveira

unread,
Jun 24, 2015, 8:41:12 PM6/24/15
to livro-...@googlegroups.com
Boa noite, vou postar os códigos, estou no capitulo 7, o problema é o seguinte:  criei os dois diretórios,produto e layout, no layout coloquei o arquivo principal.blade.php, e fiz as referências do extends nos arquivos listagem.blade.php e no detalhes.blade.php, mas os estilos de css só aparecem no listagem.blade.php, no arquivo detalhes.blade.php e formulario.blade.php ficam sem formatação visual do css, mas o que esta escrito em html aparece.

listagem.blade.php(tudo ok)
_____________________
@extends('layout.principal')
@section('conteudo')
@if(empty($produtos))
<div class="alert alert-danger">
Você não tem nenhum produto cadastrado.
</div>
@else
<h1>Listagem de produtos</h1>
<table class="table table-striped table-bordered table-hover">
@foreach ($produtos as $p) 
<tr class="{{ $p->quantidade<=1 ?'danger':''}}">
<td>{{ $p->nome }}</td>
<td>{{ $p->valor }} </td>
<td>{{ $p->descricao }}</td>
<td>{{ $p->quantidade }}</td>
<td><a href="{{ url('produtos/mostra/')}}/{{ $p->id }}">
<span class="glyphicon glyphicon-search"></span></a>
</td>
</tr>
@endforeach
</table>
</div>
@endif
<h4>
<span class="label label-danger pull-right">
   Um ou menos itens no estoque
</span>
</h4>
@stop

principal.blade.php (tudo ok)
__________________________
<html>
<head>
<!--    <link href="/css/app.css" rel="stylesheet">
    <link href="/css/custom.css" rel="stylesheet">-->
    <title>Controle de estoque</title>
<link href="{{ asset('/css/app.css') }}" rel="stylesheet">
<link href="{{ asset('/css/custom.css') }}" rel="stylesheet">
</head>
<body>
<div class="container">
    <nav class="navbar navbar-default">
   <div class="container-fluid">
   <div class="navbar-header">
   <a class="navbar-brand" href="/estoque.com.br">Estoque Engesep</a>
</div>
   <ul class="nav navbar-nav navbar-right">
    <li><a href="/estoque.com.br">Listagem</a></li>
   </ul>
</div>
</nav>  

@yield('conteudo')
<footer class="footer">
    <p>Engesep: Engenharia integrada</p>
</footer>
</div>
</body>
</html>

detalhes.blade.php( não esta estilizando com css, aparece so html)
_________________________
@extends('layout.principal')
@section('conteudo')
<h1>Detalhes do produto: {{ $p->nome }} </h1>
<ul>
   <li><b>Valor:</b> R$ {{ $p->valor }}</li>
   <li><b>Descrição:</b> {{ $p->descricao }}</li>
   <li><b>Quantidade em estoque:</b>{{ $p->quantidade }}</li>
</ul>
@stop

ProdutoController.php

_____________________________

<?php 
namespace estoque\Http\Controllers;
use Illuminate\Support\Facades\DB;
use Request;

class ProdutoController extends Controller
{
        public function lista(){
                $produtos = DB::select('select * from produtos');
                return view('produto.listagem')->with('produtos',$produtos);
               /* return view('listagem')->with('produtos',array());*/
        }
        public function mostra($id){
                $produto = DB::select('select * from produtos where id = ?',[$id]);
                if (empty($produto)) {
                       return "Esse produto não existe";
                }
                return view('produto.detalhes')->with('p', $produto[0]);   
        }

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

routes.php
_______________
<?php

Route::get('/','ProdutoController@lista');

Route::get('/estoque.com.br/produtos/mostra/{id}','ProdutoController@mostra')->where('id','[0-9]+');

Route::get('/estoque.com.br/produtos/novo','ProdutoController@novo');


Rodrigo Turini

unread,
Jun 25, 2015, 4:59:08 PM6/25/15
to junior fernandes de oliveira, livro-...@googlegroups.com
Olá Junior, tudo bem? Seu código parece estar correto, é só na view detalhes.blade.php que não carrega o css? Você percebe que o css não foi carregado por causa do cabeçalho? (é que na view em si só tem um html simples mesmo). Da uma olhada no console do seu navegador se o arquivo está sendo carregado. Se estiver usando o Chrome, por exemplo, pode clicar com o botão direito, selecionar "inspect element", abrir a aba "network" e dar um refresh na página com ela aberta. Todos os arquivos carregados aparecem lá.

--
Você recebeu essa mensagem porque está inscrito no grupo "livro-laravel" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para livro-larave...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para livro-...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/livro-laravel/a09f2819-1c11-455d-a6cb-7d8a9f74048f%40googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

junior fernandes de oliveira

unread,
Jun 25, 2015, 8:05:27 PM6/25/15
to livro-...@googlegroups.com, rodrigo...@caelum.com.br
Ola Rodrigo, tranquilo, e vc? espero q esteja tudo bem, ressaltando que seu livro é muito bom, parece um dialogo em tempo real entre autor e leitor. fiz o que me pediu, e segue a imagem, so código css não está aparecendo. Comecei ate novo projeto do zero, e tive o mesmo problema, estou pesquisando soluções, mas não encontrei ainda. so na primeira pagina está aparecendo css.





junior fernandes de oliveira

unread,
Jun 25, 2015, 8:36:18 PM6/25/15
to livro-...@googlegroups.com, rodrigo...@caelum.com.br



mais uma pista, como estou apreendendo, tudo é valido, o endereço do href é diferente, so não como fazer para mudar

junior fernandes de oliveira

unread,
Jun 25, 2015, 8:56:20 PM6/25/15
to livro-...@googlegroups.com, rodrigo...@caelum.com.br
criei outro arquivo principalB.blade.php, extends em detalhes.blade.php
<link href="{{ asset('engesep.com.br/css/app.css') }}" rel="stylesheet">
<link href="{{ asset('engesep.com.br/css/custom.css') }}" rel="stylesheet">
_____________________________________________________________________
e deixei o arquivo principal.blade.php extends listagem 

<link href="{{ asset('/css/app.css') }}" rel="stylesheet">
<link href="{{ asset('/css/custom.css') }}" rel="stylesheet">

dessa forma resolveu, mas o problema está no caminho do virtual host criei, talvez tenha uma forma mais correta.

Albert Lima

unread,
Jun 26, 2015, 6:35:23 AM6/26/15
to livro-...@googlegroups.com, rodrigo...@caelum.com.br
Olá Junior, bom dia!
O que acontece é que quando a gente deixar o path dos estilos e scripts diretos ( href="/css/app.css" ), o browser entende que o que voce está procurando está sob o caminho que você esta acessando....

Por exemplo:
se utilizarmos o link pro css como href="/css/app.css" o browser vai procurar a pasta css dentro da pasta produtos.

Usando o helper asset(), já é diferente... o servidor já faz todo o trabalho de montar o caminho correto até a pasta css, independentemente de onde você estiver acessando.

Espero ter ajudado mais que atrapalhado!
Um abraço,

lauro.h...@gmail.com

unread,
Dec 6, 2015, 5:25:04 AM12/6/15
to livro-laravel

Bom dia, Olha estou com um problema parecido com o do amigo, porém é com na exibição do formulário. Não está aparecendo a formatação do css. Estile olhando o console e por incrível que parece o arquivo custom.css não carrega no head. o.O. Quando eu abro só tem o h1 e o link do app.css. Fiquei procurando como resolver e nada. Achei no terminal algo que porra ser o erro. Nele fica aparecendo "inválid request (unexpected EOF)".



Rodrigo Turini

unread,
Dec 8, 2015, 1:03:24 PM12/8/15
to lauro.h...@gmail.com, livro-laravel
Oi Lauro, tudo bem? Pode nos mostrar como está o seu template e como está aparecendo no navegador?

Em dom, 6 de dez de 2015 às 08:25, <lauro.h...@gmail.com> escreveu:

Bom dia, Olha estou com um problema parecido com o do amigo, porém é com na exibição do formulário. Não está aparecendo a formatação do css. Estile olhando o console e por incrível que parece o arquivo custom.css não carrega no head. o.O. Quando eu abro só tem o h1 e o link do app.css. Fiquei procurando como resolver e nada. Achei no terminal algo que porra ser o erro. Nele fica aparecendo "inválid request (unexpected EOF)".



--
Você recebeu essa mensagem porque está inscrito no grupo "livro-laravel" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para livro-larave...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para livro-...@googlegroups.com.

lauro.h...@gmail.com

unread,
Dec 9, 2015, 6:51:52 AM12/9/15
to livro-laravel, lauro.h...@gmail.com, rodrigo...@caelum.com.br
Vou mostrar como está o código:

principal.blade.php
___________________________
<html>
<head>
<link href="/css/app.css" rel="stylesheet">
<link href="/css/custom.css" rel="stylesheet">
<title>Controle de estoque</title>
</head>
<body>
<div class="container">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="/produtos">
Estoque Laravel
</a>
</div>
<ul class="nav navbar-nav navbar-right">
<li><a href="{{action('ProdutoController@lista')}}">Listagem</a></li>
<li><a href="{{action('ProdutoController@novo')}}">Novo</a></li>
</ul>
</div>
</nav>

@yield('conteudo')

<footer class="footer">
<p>© Livro de Laravel da Casa do Código.</p>
</footer>

</div>
</body>
</html>


formulario.blade.php
____________________
@extends('layout/principal')

@section('conteudo')

<h1>Novo produto</h1>



<form action="/produtos/adiciona" method="post">

  <input type="hidden" name="_token" value="{{{ csrf_token() }}}" />

  <div class="form-group">
    <label>Nome</label>
    <input name="nome" class="form-control" value="{{ old('nome') }}" />
  </div>
  <div class="form-group">
    <label>Descricao</label>
    <input name="descricao" class="form-control" value="{{ old('descricao') }}"/>
  </div>
  <div class="form-group">
    <label>Valor</label>
    <input name="valor" class="form-control" value="{{ old('valor') }}"/>
  </div>
  <div class="form-group">
    <label>Quantidade</label>
    <input type="number" name="quantidade" class="form-control" value="{{ old('quantidade') }}"/>
  </div>
  <button type="submit" class="btn btn-primary btn-block">Adicionar</button>
</form>


@stop


Na tela principal está tudo ok.!


Agora quando eu clico no "novo". O código carrega normalmente, mas a aparência não. fica assim: 


Carrega o código mas somente com a aparência do bootstrap e o custom não aparece. Quando eu vou inspecionar o código vejo que não está aparecendo mesmo.


 Mas lá no principal.blade está tudo certo, eu acho. Pode me ajudar?

Rodrigo Turini

unread,
Dec 9, 2015, 7:10:46 AM12/9/15
to lauro.h...@gmail.com, livro-laravel
Oi Lauro! E como está o seu arquivo de listagem? Além disso, todos estão no mesmo diretório?

lauro.h...@gmail.com

unread,
Dec 9, 2015, 9:25:14 AM12/9/15
to livro-laravel, lauro.h...@gmail.com, rodrigo...@caelum.com.br
A página de listagem está funcionando normal. mas segue:

listagem.blade.php
___________________
@extends('layout/principal')

@section('conteudo')

@if(empty($produtos))
<div class="alert alert-danger">
Você não tem nenhum produto cadastrado.
</div>
@else

<h1>Listagem de produtos</h1>
<table class="table table-striped table-bordered table-hover">
@foreach ($produtos as $p)
<tr class="{{$p->quantidade<=1 ? 'danger' : '' }}">
<td>{{$p->nome}} </td>
<td>{{$p->valor}} </td>
<td>{{$p->descricao}} </td>
<td>{{$p->quantidade}} </td>
<td><a href="/produtos/mostra/{{$p->id}}">Visualizar</a></td>
</tr>
@endforeach
</table>

@endif

<h4>
<span class="label label-danger pull-right">
Um ou menos itens no estoque
</span>
</h4>

<div class="alert alert-success">
<strong>Sucesso!</strong>O produto {{old('nome')}} foi adicionado.
</div>

@stop


O diretório é o que você indica no livro, resources/views/produto para detalhes.blade.php, formulario.blade.php e listagem.blade.php e resources/views/layout para principal.blade.php.

O que me intriga que está normal em umas páginas e não em outras.

Rodrigo Turini

unread,
Dec 14, 2015, 7:27:20 AM12/14/15
to lauro.h...@gmail.com, livro-laravel
Oi Lauro, mil perdões pela demora. Você compactar e me enviar o projeto pra eu tentar descobrir o problema e te repassar? Pela sua descrição e pelas partes que você compartilhou aqui, tudo parece certo. 
Reply all
Reply to author
Forward
0 new messages