代码之家  ›  专栏  ›  技术社区  ›  Michael Emerson

Laravel 5如何在route::get中指定标准刀片文件

  •  0
  • Michael Emerson  · 技术社区  · 6 年前

    我正在做一个 Laravel 项目实施 React 用于前端。

    我已经设置了一些路由,并为仪表板和客户机列表页创建了两个刀片文件。

    但是,考虑到这一点,我觉得可能只有一个刀片文件,有一个页眉和页脚,只有一个 #content 中间的DIV会更有效率。

    我看不出如何指定路由的刀片文件。起初,我以为我是用 name() 在路线上运行,但我错了。这是我的路线 web.php 文件:

    Auth::routes();
    
    Route::get('/', 'HomeController@index')->name('home');
    Route::get('/clients', 'ClientController@index')->name('clients');
    

    我创建了两个刀片文件:

    home.blade.php
    clients.blade.php
    

    基本上包括:

    @extends('layouts.app')
    
    @section('content')
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">Dashboard</div>
    
                    <div class="card-body">
                        @if (session('status'))
                            <div class="alert alert-success" role="alert">
                                {{ session('status') }}
                            </div>
                        @endif
                        <div id="content"></div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    @endsection
    

    除了在客户端模板中,我还有标题“客户端”而不是“仪表板”。

    这就是 app.blade.php 每个模板扩展的内容:

    <!DOCTYPE html>
    <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    
        <!-- CSRF Token -->
        <meta name="csrf-token" content="{{ csrf_token() }}">
    
        <title>{{ config('app.name', 'Reserve Shark') }}</title>
    
        <!-- Scripts -->
        <script src="{{ mix('js/app.js') }}" defer></script>
    
        <!-- Fonts -->
        <link rel="dns-prefetch" href="https://fonts.gstatic.com">
        <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">
    
        <!-- Styles -->
        <link href="{{ mix('css/app.css') }}" rel="stylesheet">
    </head>
    <body>
        <div id="app">
            <nav class="navbar navbar-expand-md navbar-light navbar-laravel">
                <div class="container">
                    <a class="navbar-brand" href="{{ url('/') }}">
                        {{ config('app.name', 'Reserve Shark') }}
                    </a>
                    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
                        <span class="navbar-toggler-icon"></span>
                    </button>
    
                    <div class="collapse navbar-collapse" id="navbarSupportedContent">
                        <!-- Left Side Of Navbar -->
                        <ul class="navbar-nav mr-auto">
    
                        </ul>
    
                        <!-- Right Side Of Navbar -->
                        <ul class="navbar-nav ml-auto">
                            <!-- Authentication Links -->
                            @guest
                                <li class="nav-item">
                                    <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
                                </li>
                                <li class="nav-item">
                                    <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
                                </li>
                            @else
                                <li class="nav-item dropdown">
                                    <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
                                        {{ Auth::user()->name }} <span class="caret"></span>
                                    </a>
    
                                    <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
                                        <a class="dropdown-item" href="{{ route('logout') }}"
                                           onclick="event.preventDefault();
                                                         document.getElementById('logout-form').submit();">
                                            {{ __('Logout') }}
                                        </a>
    
                                        <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
                                            @csrf
                                        </form>
                                    </div>
                                </li>
                            @endguest
                        </ul>
                    </div>
                </div>
            </nav>
    
            <main class="py-4">
                @yield('content')
            </main>
        </div>
    </body>
    </html>
    

    但是,当我将客户机路由的名称更改为“home”(认为它将使用home blade文件)时,它没有更改。所以,为了测试的目的,我把它改成了“blah”,它没有改变任何东西。我甚至改变了到客户机页面的路由,在我的 app.js 文件:

    render((
        <Router history={browserHistory}>
            <Route path="/" component={Example} />
            <Route path="/client-page" component={Client} />
        </Router>
        ), document.getElementById('content')
    );
    

    但是没有改变。

    当我将clients.blade.php文件更改为 clients2.blade.php 我说的时候出错了 clients.blade.php 根本不存在。

    所以我的问题是:Laravel究竟在哪里规定了这一页 刀片文件?

    是否可能以某种方式更改它,使每个路由使用相同的文件,唯一的区别是注入到 γ含量 div?

    2 回复  |  直到 6 年前
        1
  •  1
  •   thisiskelvin shubham singh    6 年前

    在您的控制器(如ClientController)中, index 方法,应该有 view(...) 辅助方法或 View::make(...) 静态法。

    更改该值以更改使用的刀刃模板。

        2
  •  1
  •   Yves Kipondo    6 年前

    当你使用 ->name('home') 附加到您的路由,您只需指定路由的名称,默认情况下,Laravel会将您的路由命名为 home.route 这只是为了帮助你记住你的路线名称,当你想返回相同的网址而不是手动编写网址时,你可以使用 route() 帮手

    要指定要呈现的刀刃模板,必须将索引方法放入 HomeController

    class HomeController extends Controller
    {
        public function index() 
        {
            /* here goes all other code */ 
            return View::make('home'); // Laravel will render your home.blade.php file
        }
    }
    
    class ClientController extends Controller
    {
        public function index()
        {
            /* here goes all other code */ 
            return View::make('clients'); // Laravel will render your clients.blade.php file
        }
    }
    

    别忘了用 Illuminate\Supports\Facades\View