Link to home
Start Free TrialLog in
Avatar of Eduardo Fuerte
Eduardo FuerteFlag for Brazil

asked on

Could you point how to correctly reuse an existent view as a template for another by using Laravel?

Hi  Experts


Could you point how to correctly reuse an existent view as a template for another by using Laravel?

The view I already have:
<section class='row'>

	<div class="col-md-12 titulo">Notícias</div>
	@if($noticias->count()>0)
		<div class="col-md-12">
			<img src="{{ $noticias[0]->url }}" />
			<h4>{{ $noticias[0]->titulo }}</h4>
			<a href="/noticia?id={{ $noticias[0]->id }}">
				leia mais
			</a>
            
            <br />
           	<a href="/noticia?id={{ $noticias[0]->id }}">
				ver todas
			</a>  

		</div>
	
	@else
		<div class="col-xs-12 col-sm-12 col-md-12">
			<div class='alert alert-info'>
				Nenhuma notícia cadastrada, ativa ou aprovada.
			</div>
		</div>
	@endif

	<script src="{{ asset('js/hotsite/Hotsite.Noticia.js').'?v='.md5(uniqid()) }}" ></script>
<section>

Open in new window


It uses the table noticias


To get another similar view to have a similar functioality I created the table "vitrine" (directly at MySQL, without using migrations) and then created that another view:
<section class='row'>


	<div class="col-md-12 titulo">Instagaz</div>
	@if($vitrine->count()>0)
		 <div class="col-md-12">
			<img src="{{ $vitrine[0]->url }}" />

             <div class="col-md-12" style="padding-top: 9px;">
    			<a href="/vitrine?id={{ $vitrine[0]->id }}">
    				ver todas as fotos
    			</a>
                <br />
               	<a href="/vitrine?id={{ $vitrine[0]->id }}">
    				ver minhas fotos
    			</a>
                 <br />
                <a href="/vitrine?id={{ $vitrine[0]->id }}">
    				enviar minha foto
    			</a>
                
    		</div>
        </div>
 
	@else
		<div class="col-xs-12 col-sm-12 col-md-12">
			<div class='alert alert-info'>
				Nenhuma vitrine cadastrada, ativa ou aprovada.
			</div>
		</div>
	@endif

	<script src="{{ asset('js/hotsite/Hotsite.Noticia.js').'?v='.md5(uniqid()) }}" ></script>
<section>

Open in new window



And then created Model and Controller correspondent to "Vitrine"

But when running it that error occurs:

 User generated image
I couldn't find the count() method count() declared - just used on the code.... is that an Eloquent method?

If any aditional code is needed to better question's comprehension just say it.

Thanks in advance.
Avatar of Chris Stanyon
Chris Stanyon
Flag of United Kingdom of Great Britain and Northern Ireland image

Hi Eduardo,

You'd need to check your controller or your route to see what data you're sending to the view. Your blade template is expecting $vitrine to be a collection, but looking at your stack-trace, it seems to be a single object. Your stack shows that you have these elements

vitrine => Object(Resultado)
noticias => Object(Collection)

It may be that your controller is just passing the wrong thing to the view, so I would there. Post up the controller code if you want me to take a look.
Avatar of Eduardo Fuerte

ASKER

Hi Chris


Here is the routes.php (Existent Noticias and similarly created Vitrine)

//----------------------------------------------------------------------------------
	/* Notícias */
	Route::get('noticia','NoticiaController@index');
	Route::post('noticia/salvar','NoticiaController@salvar');
	Route::get('noticia/listar','NoticiaController@listar');
	Route::get('noticia/{id}/obter','NoticiaController@obter');
	Route::get('noticia/{id}/ativar','NoticiaController@ativar');
	Route::get('noticia/{id}/aprovar','NoticiaController@aprovar');
	Route::post('noticia/filtrar','NoticiaController@filtrar');


	/* Vitrines  EF 2020 */
	Route::get('vitrine','VitrineController@index');
	Route::post('vitrine/salvar','VitrineController@salvar');
	Route::get('vitrine/listar','VitrineController@listar');
	Route::get('vitrine/{id}/obter','VitrineController@obter');
	Route::get('vitrine/{id}/ativar','VitrineController@ativar');
	Route::get('vitrine/{id}/aprovar','VitrineController@aprovar');
	Route::post('vitrine/filtrar','VitrineController@filtrar');
//----------------------------------------------------------------------------------


//----------------------------------------------------------------------------------
/* Notícias */
Route::get('/noticia',['uses'=>'NoticiasController@index']);
Route::get('/noticia/{id}/obter',['uses'=>'admin\NoticiaController@obter']);


/* Vitrines  EF 2020 */
Route::get('/vitrine',['uses'=>'VitrinesController@index']);
Route::get('/vitrine/{id}/obter',['uses'=>'admin\VitrineController@obter']);
//----------------------------------------------------------------------------------

Open in new window



Here is the \Http\Controllers\Admin\VitrineController.php (created similarly to NoticiaController.php)
<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use App\Models\Vitrine;
use App\Models\Tipoparticipante;
use App\Models\Resultado;
use App\User;
use App\Support\AzureStorage;

use App\Models\Configuracao;

use Auth;
use CustomFuncs;
use Carbon\Carbon;
use Debugbar;

class VitrineController extends Controller
{
    public function index(){
        
        
        // EF Jan 2020
       file_put_contents('debug.log', 'Index....'.PHP_EOL , FILE_APPEND);
       
       
        
      $vitrines=Vitrine::all();
      $tipoparticipantes = Tipoparticipante::where("id",">",2)->get();
      $users = User::where('tipoparticipante_id','>=',2)->get();
      return view('admin.vitrine.index',['vitrines'=>$vitrines,'tipoparticipantes'=>$tipoparticipantes,'users'=>$users]);
    }

    public function salvar(Request $request){
      $agora = Carbon::now()->subDay();
      $agora = Carbon::create($agora->year, $agora->month, $agora->day,23,59,59);

      $id = $request->input('id');
      $tipoparticipante_id = $request->input('tipoparticipante_id');
      $titulo = $request->input('titulo');
      $subtitulo = $request->input('subtitulo');
      $conteudo = $request->input('conteudo');
      $ativo = $request->input('ativo');
      $aprovada = $request->input('aprovada');
      $url = $request->input('url');
      $inicio = CustomFuncs::brancoParaNulo($request->input('inicio'));
      if ($inicio!=null){
        $inicio = Carbon::createFromFormat('Y-m-d H:i:s', $request->input('inicio'))->toDateTimeString();
      }
      $termino = CustomFuncs::brancoParaNulo($request->input('termino'));
      if ($termino!=null){
        $termino = Carbon::createFromFormat('Y-m-d H:i:s', $request->input('termino'))->toDateTimeString();
      }

      if ($id==0){
        /* Valida requisição */
        $this->validate($request, [
                    'conteudo' => 'required',
                    'titulo' => 'required|max:255',
                    'inicio'=>'required|date|after:'.$agora,
                    'termino'=>'required|date|after:'.$agora.'|after:inicio',
                  ],
                  [
                    'conteudo.required'=>'O conteúdo da notícia é obrigatório, não deixe em branco',
                    'titulo.required'=>'O título da notícia é obrigatório, não deixe em branco',
                    'inicio.required'=>'O início da vigência da notícia é obrigatório, não deixe em branco',
                    'inicio.date'=>'O início da vigência deve ser uma data',
                    'inicio.after'=>'O início da vigência deve ser maior do que o dia de hoje',
                    'termino.required'=>'O término da vigência da notícia é obrigatório, não deixe em branco',
                    'termino.date'=>'O término da vigência deve ser uma data',
                    'termino.after'=>'O término da vigência deve ser maior do que o dia de hoje e maior do que o início da vigência'
                  ]
                  );
      } else {
        /* Valida requisição */
        $this->validate($request, [
                    'conteudo' => 'required',
                    'titulo' => 'required|max:255',
                    'termino'=>'required|date|after:'.$agora.'|after:inicio',
                  ],
                  [
                    'conteudo.required'=>'O conteúdo da notícia é obrigatório, não deixe em branco',
                    'titulo.required'=>'O título da notícia é obrigatório, não deixe em branco',
                    'inicio.required'=>'O início da vigência da notícia é obrigatório, não deixe em branco',
                    'inicio.date'=>'O início da vigência deve ser uma data',
                    'inicio.after'=>'O início da vigência deve ser maior do que o dia de hoje',
                    'termino.required'=>'O término da vigência da notícia é obrigatório, não deixe em branco',
                    'termino.date'=>'O término da vigência deve ser uma data',
                    'termino.after'=>'O término da vigência deve ser maior do que o dia de hoje e maior do que o início da vigência'
                  ]
                  );
      }

      if ($id==0){
        $vitrineObj = new Vitrine;
        if ($tipoparticipante_id!=0){
          $vitrineObj->tipoparticipante_id=$tipoparticipante_id;
        }

        $vitrineObj->criador_id=$request->user()->id;
        $vitrineObj->created_at=new \DateTime();
        $vitrineObj->updated_at=new \DateTime();

        if ($aprovada==1){
          $vitrineObj->aprovador_id=$request->user()->id;
        }
      } else {
        $vitrineObj = Vitrine::find($id);
        $vitrineObj->updated_at=new \DateTime();
        if ($tipoparticipante_id==0){
          $vitrineObj->tipoparticipante_id=null;
        } else {
          $vitrineObj->tipoparticipante_id=$tipoparticipante_id;
        }

        if ($aprovada==1 && $vitrineObj->aprovada==0){
          $vitrineObj->aprovador_id=$request->user()->id;
        }
      }

      $vitrineObj->titulo=$titulo;
      $vitrineObj->subtitulo=$subtitulo;
      $vitrineObj->conteudo=$conteudo;
      $vitrineObj->ativo=$ativo;
      $vitrineObj->aprovada=$aprovada;
      $vitrineObj->vigencia_inicio=$inicio;
      $vitrineObj->vigencia_termino=$termino;
      $vitrineObj->url = $url;

      try {
        $vitrineObj->save();
        $resultado=new Resultado(false,"","Notícia salva com sucesso.");
      } catch (\Exception $e){
        $resultado=new Resultado(true,$e->getMessage(),"Erro ao salvar o notícia.");
      }

      return response()->json($resultado);
    }

    public function filtrar(Request $request){

      $titulo = $request->input('titulo');
      $conteudo=$request->input('conteudo');
      $tipoparticipante=$request->input('tipoparticipante');
      $status=$request->input('status');
      $aprovacao=$request->input('aprovacao');
      $criador=$request->input('criador');
      $aprovador=$request->input('aprovador');

      if ($titulo=='' && $conteudo==='' && $tipoparticipante==='' && $status==='' && $aprovacao=='' && $criador=='' && $aprovador==''){
        $vitrines = Vitrine::all();
      } else {
        $vitrines = Vitrine::titulo($titulo)->conteudo($conteudo)->perfil($tipoparticipante)->status($status)->aprovacao($aprovacao)->criador($criador)->aprovador($aprovador)->get();
      }
      return view('admin.vitrine._list',['vitrine' => $vitrines]);
    }

    public function listar(){
      $vitrines = Vitrine::all();
      
      // EF Jan 2020
      file_put_contents('debug.log', 'Apresenta....', FILE_APPEND);
      
      return view('admin.vitrine._list',['vitrine' => $vitrines]);
    }

    public function obter($id){
      try {
        $vitrine=Vitrine::find($id);
        if($vitrine->url === null){
          $vitrine->url = Configuracao::first()->urlPadraoVitrines;
        }
        $resultado=new Resultado(false,"",$vitrine);
      } catch (\Exception $e) {
        $resultado=new Resultado(true,$e->getMessage(),"");
      }
      return response()->json($resultado);
    }

    public function ativar($id){
      try {
        $vitrine = Vitrine::find($id);
        if($vitrine->ativo==0){
          $vitrine->ativo=1;
        } else {
          $vitrine->ativo=0;
        }
        $vitrine->save();
        $resultado=new Resultado(false,"","Noticía ativada/desativada com sucesso.");
      } catch (\Exception $e){
        $resultado=new Resultado(true,$e->getMessage(),"Erro ao ativar/desativar a notícia.");
      }

      return response()->json($resultado);
    }

    public function aprovar($id){
      try {
        $vitrine = Vitrine::find($id);
        if($vitrine->aprovada==0){
          $vitrine->aprovada=1;
          $vitrine->aprovador_id=Auth::user()->id;
        } else {
          $vitrine->aprovada=0;
          $vitrine->aprovador_id=null;
        }
        $vitrine->save();
        $resultado=new Resultado(false,"","Noticía aprovada/reprovada com sucesso.");
      } catch (\Exception $e){
        $resultado=new Resultado(true,$e->getMessage(),"Erro ao aprovar/reprovar a notícia.");
      }

      return response()->json($resultado);
    }

    public function salvarImagem(Request $request){
      info($request);
      $this->validate($request, [
        // 'file' => 'dimensions:min_width=600,min_height=800'
        'file' => 'image|dimensions:min_width=600,min_height=800'
      ], [
        'file.dimensions' => 'A imagem deve ter dimensão mínima de 600x800',
        'file.image' => 'O arquivo deve ser uma imagem'
      ]
      );
      
      $vitrine=$request->file('file');
  
      if (!$request->hasFile('file')){
        $resultado=new Resultado(true,"","Nenhum arquivo foi selecionado.");
        return response()->json($resultado);
      } else {					
              $vitrineUrl = AzureStorage::saveFile($vitrine,'vitrine');
      }
  
      $output = array(
        "localizacao" => $vitrineUrl,
      );
  
      $resultado=new Resultado(false,"",$output);
  
      return response()->json($resultado);
      }
}

Open in new window


And here the \Http\Controllers\VitrinesController.php (similar to NoticiasController.php)
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Models\Vitrine;
use App\Models\UserVitrine;
use App\Models\Configuracao;
use App\Models\Resultado;

use App\Models\Acesso;

use Auth;
use Debugbar;
use Carbon\Carbon;

class VitrinesController extends Controller
{
    public function index(Request $request){
      
      Acesso::salvar(5);

      if (Auth::check()){
          $vitrines = Vitrine
            ::vigente()
            ->ativa()
            ->aprovada()
            ->global(Auth::user()->tipoparticipante_id)
            ->orderBy('id','desc')
            ->get();

          if (!empty($request->input('id'))){
              $noticia = Vitrine::find($request->input('id'));
              if($noticia->url === null){
                $noticia->url = Configuracao::first()->urlPadraoVitrines;
              }
          } else {
              $noticia = null;
          }
        } else {
          $vitrines = Vitrine
            ::vigente()
            ->ativa()
            ->aprovada()
            ->global('')
            ->orderBy('id','desc')
            ->get();
        }

        $mUserVitrine = new UserVitrine();
        $qtdeCurtiu = 0;
        $qtdeNaoCurtiu = 0;
        
        $userVitrine = null;
      
        if(!empty($noticia)){
          $qtdeCurtiu = $mUserVitrine->obterCurtidasPorVitrine($noticia->id, 1);
          $qtdeNaoCurtiu = $mUserVitrine->obterCurtidasPorVitrine($noticia->id, 0);

          $userNoticia = $mUserNoticia->obter(Auth::user()->id, $noticia->id);
        } else {
          $qtdeCurtiu = $mUserVitrine->obterCurtidasPorVitrine($vitrines[0]->id, 1);
          $qtdeNaoCurtiu = $mUserVitrine->obterCurtidasPorVitrine($vitrines[0]->id, 0);

          $userNoticia = $mUserNoticia->obter(Auth::user()->id, $vitrines[0]->id);
        }

        $curtiu = !empty($userVitrine) ? $userVitrine->curtiu : "";
        return view('vitrines.index',compact('vitrines','noticia','qtdeCurtiu','qtdeNaoCurtiu','curtiu'));
    }

    public function salvarEscolha(Request $request){

      $noticia_id = $request->input('noticia_id');
      $curtiu = $request->input('curtiu');

      $mUserVitrine = new UserVitrine();
      $userVitrine = $mUserVitrine->obter(Auth::user()->id, $noticia_id);

      if(empty($userVitrine)){
        $userVitrine = new UserVitrine();
        $userVitrine->user_id = Auth::user()->id;
        $userVitrine->noticia_id = $noticia_id;
        $userVitrine->created_at = Carbon::now();
      }

      $userVitrine->curtiu = $curtiu;
      $userVitrine->updated_at = Carbon::now();
      $userVitrine->save();

      return response()->json(new Resultado(true, 'Sucesso', null), 200);
    }
}

Open in new window


Initially I tried to run:
http://localhost:8000/vitrine

To resembles:
http://localhost:8000/noticia


But no pages was found (404)

Could you check?
Hey Eduardo,

I'm a little confused by your code. Your routes file shows that you have 2 routes pointing to the same URL - one is using the VitrinesController (with an s) and one is using VitrineController (without the s)

You say you're getting a 404 error, but in your original question you were getting exceptions.

First off, make sure your route are set up correct. Run the php artisan route:list command and see what you get.

Then I would suggest you do a dump of the $vitrines variable from your Controller. Simply add this to your code, just before you call return view(...

dd($vitrines);

Open in new window

That will show you exactly what's stored in that variable - it should be a collection. If it's not, then that's where your problem lies. Let me know the output of the dd() call.
Hi Chris

I just had a call with someone experienced on this site...

He told me I'm not using the correct routes. php

The correct is under \routes\web.php

In the question the view produced the error. Then I tried to call a route path.

That's the difference. So your suggestion is valid!
So, now the controller vitrine is fired by using:

http://localhost:8000/vitrine

Unfortunatelly when the home.blade.php calls  the  complete page the variable $vitrines isn't found:
User generated image


\vitrine\gadget.blade.php
<section class='row'>


	<div class="col-md-12 titulo">Instagaz</div>
    <?php
        file_put_contents('debug.log',$vitrines, FILE_APPEND);
    ?>
    
	<div class="col-md-12 titulo">Vitrines</div>
    @if($vitrines->count()>0)
		 <div class="col-md-12">
			<img src="{{ $vitrines[0]->url }}" />

             <div class="col-md-12" style="padding-top: 9px;">
    			<a href="/vitrine?id={{ $vitrines[0]->id }}">
    				ver todas as fotos
    			</a>
                <br />
               	<a href="/vitrine?id={{ $vitrines[0]->id }}">
    				ver minhas fotos
    			</a>
                 <br />
                <a href="/vitrine?id={{ $vitrines[0]->id }}">
    				enviar minha foto
    			</a>
                
    		</div>
        </div>
 
	@else
		<div class="col-xs-12 col-sm-12 col-md-12">
			<div class='alert alert-info'>
				Nenhuma vitrine cadastrada, ativa ou aprovada.
			</div>
		</div>

Open in new window



But the controller fills the data...
class VitrinesController extends Controller
{
    public function index(Request $request){
      Acesso::salvar(5);

      if (Auth::check()){
          $vitrines = Vitrine
            ::vigente()
            ->ativa()
            ->aprovada()
            ->global(Auth::user()->tipoparticipante_id)
            ->orderBy('id','desc')
            ->get();

          if (!empty($request->input('id'))){
              $vitrine = Vitrine::find($request->input('id'));
              if($vitrine->url === null){
                $vitrine->url = Configuracao::first()->urlPadraoVitrines;
              }
          } else {
              $vitrine = null;
          }
        } else {
          $vitrines = Vitrine
            ::vigente()
            ->ativa()
            ->aprovada()
            ->global('')
            ->orderBy('id','desc')
            ->get();
        }

// ---------------THIS RETURNS DATA ------------------------------------
        file_put_contents('debug.log',$vitrines, FILE_APPEND);
//--------------------------------------------------------------------------------------

...

Open in new window


Hard to find why the controller data is not passed to the view...
It's very difficult to know when I'm only seeing small parts of your application.

If you look at the stack trace, bottom of the list, you'll see that your home.blade.php template is only receiving a variable called vitrine (singular), which is of the type Resultado:

vitrine => Object(Resultado)

Somewhere between your controller and your view, you're passing a variable called $vitrine containing a single Resultado.

Have a look at your Controller method and dd() out the $vitrines array. Then have a look at the call to view(...) to make sure you are actually passing in 'vitrines' => $vitrines. Then walk through your view hierarchy to make sure you're not removing / resetting the data in any sub-views.

If that doesnt work out, try taking a step back and creating something really simple for testing purposes. Create a view test.blade.php and add just the following:

@php dd($vitrines) @endphp

Now change your controller method to load that view:

public function index(Request $request){
    $vitrines = Vitrine::all();
    return view( 'test', compact('vitrines') );    
}

Open in new window

Call up your URL and make sure you're getting a dump of all the $vitrines.
Returning to the controller

    public function index(Request $request){
     
      Acesso::salvar(5);

      if (Auth::check()){
          $vitrines = Vitrine
            ::vigente()
            ->ativa()
            ->aprovada()
            ->global(Auth::user()->tipoparticipante_id)
            ->orderBy('id','desc')
            ->get();

          if (!empty($request->input('id'))){
              $vitrine = Vitrine::find($request->input('id'));
              if($vitrine->url === null){
                $vitrine->url = Configuracao::first()->urlPadraoVitrines;
              }
          } else {
              $vitrine = null;
          }
        } else {
          $vitrines = Vitrine
            ::vigente()
            ->ativa()
            ->aprovada()
            ->global('')
            ->orderBy('id','desc')
            ->get();
        }

        $mUserVitrine = new UserVitrine();
        $qtdeCurtiu = 0;
        $qtdeNaoCurtiu = 0;
        
        $userVitrine = null;
      
        if(!empty($vitrine)){
          $qtdeCurtiu = $mUserVitrine->obterCurtidasPorVitrine($vitrine->id, 1);
          $qtdeNaoCurtiu = $mUserVitrine->obterCurtidasPorVitrine($vitrine->id, 0);

          $userVitrine = $mUserVitrine->obter(Auth::user()->id, $vitrine->id);
        } else {
          $qtdeCurtiu = $mUserVitrine->obterCurtidasPorVitrine($vitrines[0]->id, 1);
          $qtdeNaoCurtiu = $mUserVitrine->obterCurtidasPorVitrine($vitrines[0]->id, 0);

          $userVitrine = $mUserVitrine->obter(Auth::user()->id, $vitrines[0]->id);
        }

        $curtiu = !empty($userVitrine) ? $userVitrine->curtiu : "";
        
	// VALUES ARE FOUND HERE
        file_put_contents('debug.log',$vitrines, FILE_APPEND);
       
       // By using this path it's OK: http://localhost:8000/vitrine 
        return view('vitrines.index',compact('vitrines','vitrine','qtdeCurtiu','qtdeNaoCurtiu','curtiu'));
    }

Open in new window



The problem is when I use home.blade.php
@extends('layouts.app')

@section('content')

    @include('layouts.modais.splash')
    @include('layouts.banner')


    <section class="row">
        <div class="col-sm-12 col-md-8">
            <div class="box-kpis">
                @include('kpi.vitrine')
            </div>
        </div>
        <div class="col-sm-12 col-md-4">
            <div class="box-ranking">
                @include('ranking.gadget')
            </div>
        </div>
    </section>

    @include('layouts.vitrine.index')

    <section class="row">
    
    
        <div class="col-sm-12 col-md-4">
            <div class="box-noticias">
                @include('noticias.gadget')
            </div>
        </div>
        
     
        <div class="col-sm-12 col-md-4">
            <div class="box-noticias">
                @include('vitrines.gadget')
            </div>
        </div>
       
       
       <div class="col-sm-12 col-md-4">
            <div class="box-noticias">
                @include('video.gadget')
            </div>
        </div>
    
    </section>
@endsection

Open in new window


That calls  vitrines\gadget.,blade.php

$vitrines is not found at this context

<section class='row'>


	<div class="col-md-12 titulo">Instagaz</div>
  

    @if($vitrines->count()>0)
		 <div class="col-md-12">
			<img src="{{ $vitrine[0]->url }}" />

             <div class="col-md-12" style="padding-top: 9px;">
    			<a href="/vitrine?id={{ $vitrines[0]->id }}">
    				ver todas as fotos
    			</a>
                <br />
               	<a href="/vitrine?id={{ $vitrines[0]->id }}">
    				ver minhas fotos
    			</a>
                 <br />
                <a href="/vitrine?id={{ $vitrines[0]->id }}">
    				enviar minha foto
    			</a>
                
    		</div>
        </div>
 
	@else
		<div class="col-xs-12 col-sm-12 col-md-12">
			<div class='alert alert-info'>
				Nenhuma vitrine cadastrada, ativa ou aprovada.
			</div>
		</div>
	@endif

	<script src="{{ asset('js/hotsite/Hotsite.Vitrine.js').'?v='.md5(uniqid()) }}" ></script>
<section>

Open in new window

Amazingly:  noticias\gadget.blade and NoticiasController.php  where vitrine\gadget.blade  and VitrinesController,php was similarly copied perfectly runs.
Hey Eduardo,

You mention home.blade.php, but in your code you're loading vitrines/index.blade.php:

return view('vitrines.index',compact...
The amazingly is:
The home page is composed with the noticias.gadget / video.gadget/  vitrines.gadget

@extends('layouts.app')

@section('content')

    @include('layouts.modais.splash')
    @include('layouts.banner')


    <section class="row">
        <div class="col-sm-12 col-md-8">
            <div class="box-kpis">
                @include('kpi.vitrine')
            </div>
        </div>
        <div class="col-sm-12 col-md-4">
            <div class="box-ranking">
                @include('ranking.gadget')
            </div>
        </div>
    </section>

    @include('layouts.vitrine.index')

    <section class="row">
    
    
        <div class="col-sm-12 col-md-4">
            <div class="box-noticias">
                @include('noticias.gadget')
            </div>
        </div>
        
     
        <div class="col-sm-12 col-md-4">
            <div class="box-noticias">
                @include('vitrines.gadget')
            </div>
        </div>
       
       
       <div class="col-sm-12 col-md-4">
            <div class="box-noticias">
                @include('video.gadget')
            </div>
        </div>
    
    </section>
@endsection

Open in new window


The controllers only calls the indexes:

view('noticias.index, compact(noticias,...));    

or

view('vitrines.index, compact(vitrines,...));  


No calls to other views.

In the case of noticias.gadget  => $noticias  is found
In the case of vitrines.gadget  => $vitrines  is NOT found

In the meanwhile I was advised about a global variable $vitrine  (May it be causing the troble?)
Hi Chris

Finally found what was causing all this trouble...

The controller \Controllers\HomeController.php calls home.blade.php

It had been sending 'noticias' before so noticias\gadget.blade.php was OK since the start.

What I had to do is to prepare this conttoroller to consider vitrines\gadget.blade.php populating $vitrines on it - that is new to this conext -   the same way \Controller\VitrinesController does (since http://localhost:8000/vitrine had been running correctly)
ASKER CERTIFIED SOLUTION
Avatar of Eduardo Fuerte
Eduardo Fuerte
Flag of Brazil image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Chris

Thank you for your assistance!
No worries Eduardo :)