【问题标题】:Laravel 5.4 - @extends not workingLaravel 5.4 - @extends 不工作
【发布时间】:2017-10-25 23:21:06
【问题描述】:

我在 Laravel 中有两个主要视图。

两者的调用方式如下,在web.php中:

Route::get('/characters', 'CharacterController@index');
Route::get('/characters/{char_id}', 'CharacterController@viewCharacter');

这是它们在 CharacterController 中的功能:

/字符:

public function index()
{



$characters = Character::userChars();

return view('pages.characters', compact('characters') );


}

字符/{char_id}:

public function viewCharacter ($char_id)

{

    $character = \DB::table('characters')->where('char_id', $char_id)->first();

    return view('pages.view-character', compact('character') );


}

/characters 工作正常。 它使用

@extends('layouts.master')

@section('content')

@endsection

所有内容都可以正常加载并显示 CSS。

但是,characters/{char_id} 拒绝正常工作。

它显示来自 @extends 的内容,但根本不会呈现 CSS。

这是字符/{char_id} 的刀片模板:

@extends('layouts.master')

@section('content')

<div id="page-wrapper">

            <div class="container-fluid">

                <!-- Page Heading -->
                <div class="row">
                    <div class="col-lg-12">
                        <h1 class="page-header">
                            Template <small>Template Page</small>
                        </h1>
                        <ol class="breadcrumb">
                            <li class="active">
                                <i class="fa fa-dashboard"></i> Template 1

                            </li>
                        </ol>
                    </div>
                </div>








            </div>
</div>

@endsection

它与 /characters 使用的视图相同,除了内容部分中的内容。

这里是“master.blade.php”: https://pastebin.com/kjnxc0ms

谢谢!

【问题讨论】:

  • dd() 停止任何进一步的执行。这就是它的 die 部分。布局未呈现,因为您没有允许它呈现。 dd() 真的是你想要的吗?你想通过它来完成什么?
  • @Kaspars 不是。我只是用它来测试变量是否正确传递。我已经删除了它,我现在得到了“@extends”内容,但由于某种原因,它没有呈现任何 CSS。我将编辑我的问题以反映这一点。
  • 同时发布您的layouts.master 文件。
  • 添加了@Kaspars。它适用于 /characters

标签: php laravel-5 laravel-5.4


【解决方案1】:

在您的 master.blade.php 布局中,资产是从相对 url 加载的

例如,如果您的资产是从assets/css/bootstrap.min.css 加载的,而您当前的网址是example.com/character,那么您的资产将从example.com/assets/css/bootstrap.min.css 加载。到目前为止,这似乎还不错

但如果您的 url 是 example.com/characters/potato,那么资产将从 example.com/characters/assets/css/bootstrap.min.css 加载。这可以从浏览器控制台轻松识别,因为它会在加载资产时显示 404 错误。 (铬 F12)

两个解决方案:

  • 使用正斜杠为您的资产路径添加前缀,例如 /assets/css/bootstrap.min.css
  • 一个特定于 laravel 的解决方案是使用资产帮助函数 {{ asset('assets/css/bootstrap.min.css') }}

【讨论】:

  • 现在我所有漂亮的 CSS 都回来了。非常感谢卡斯帕斯!
【解决方案2】:

首先发布你的布局代码。

其次,请确保您使用帮助器 asset 调用您的 css,例如。

{{ URL::asset('css/style.css'); }} 

【讨论】:

  • 当然,我已经在最后的粘贴箱中添加了布局代码。我会尝试以这种方式调用 CSS。
猜你喜欢
  • 2018-12-25
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-05
相关资源
最近更新 更多