web-dev-qa-db-fra.com

Laravel - Charger l’en-tête et le pied de page communs pour les afficher

Je suis nouveau à Laravel et j'essaie de charger l'en-tête, le pied de page et le fichier de vue du contrôleur dans un modèle commun et d'afficher les données du contrôleur dans le fichier de vue. Mais je suis obtenir l'erreur View ['admin.dashboard'] not found.

Le fichier de tableau de bord est présent dans le dossier admin à l'intérieur des vues

manette

namespace App\Http\Controllers;

use Illuminate\Http\Request;

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

class common extends Controller
{

   public function login()
   {
        $data['title'] = 'Dashboard';
        $data['template'] = 'admin/dashboard';
        return view('common_template', compact('data'));

   }
}

common_template.blade View

<?php echo View::make('includes/header'); ?>

<?php echo $template = "'".$data['template']."'"; 
echo View::make($template); ?> 
<?php echo View::make('includes/footer'); ?>

Quand j'ajoute 'admin/dashboard' au lieu de $data['template'] directement dans $template, il charge le fichier de tableau de bord alors qu'il ne se charge pas lorsque je le passe sous forme de chaîne à partir du contrôleur.

Vue du tableau de bord.blade

<p><?php echo $data['title']; ?></p> //printing the data from the controller

Aidez-moi à passer à travers ça. Merci

6
Kirthika

Pour inclure le modèle de lame dans un autre modèle, utilisez @include :

@include('admin.dashboard')

Ou

@include($data['template']) // This should be the name of template, like 'admin.dashboard', but not path

Vérifiez également si la vue porte le nom correct et se trouve dans le bon répertoire:

resources/views/admin/dashboard.blade.php
4
Alexey Mezenin

Pour inclure un modèle de lame dans un autre modèle,

layouts/index.blade.php  

 

<head>
    <!-- Site Title -->
    <title>{{ $title }}</title> //dynamic title
    <link rel="stylesheet" href="{{ asset('website/css/main.css') }}"> 
@stack('css') //internal css
</head>

<body>
    @include('../website/layouts/header')//include header
    @yield('content')//include content
    @include('../website/layouts/footer') //include footer
    <!-- start footer Area -->
    <!-- End footer Area -->
    <script src="{{asset('website/js/vendor/jquery-2.2.4.min.js ') }}"></script>
    @stack('js')//internal js
</body>

</html>

layouts/footer.blade.php

// footer code
<h1>This area for footer code

layouts/header.blade.php

// headercode
<h1>This area for headercode

/home.blade.php

<?php $title = "dynamic title"; ?> //title

@extends('layouts/index') //include index page

@Push('css') // this is for internal js
*{
color:black;
}
@endpush

@section('content') //section for content
This area for home page content
@stop // content ended

@Push('js') // this is for internal js
<script>
    $(document).ready(function(){
         var loggedIn={!! json_encode(Auth::check()) !!};
        $('.send').click(function() {
            if(!loggedIn){
                moda.style.display = "block";   
            return false;
            }
        });
    });
@endpush
2
Balaji Rajendran

Tout d’abord, votre code doit être corrigé conformément à la norme du code de la lame Laravel. Essayez ci-dessous le code:
common_template.blade Voir

@include('includes.header')

@yield('content')

@include('includes.footer')

Vue du tableau de bord.blade

@extends('common_template')

@section('content')
    {{$data['title']}}
@endsection
2