Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 刀片将值从视图传递到主视图,然后传递到header.Blade_Laravel_Laravel 5_Blade - Fatal编程技术网

Laravel 刀片将值从视图传递到主视图,然后传递到header.Blade

Laravel 刀片将值从视图传递到主视图,然后传递到header.Blade,laravel,laravel-5,blade,Laravel,Laravel 5,Blade,我有一个视图文件users.blade.php,它扩展了master。主文件包含另一个名为header.blade.php的文件,我想将一些数据从users.blade传递到header.blade 以下是这些文件的简化版本 /****** Users.blade.php *********/ @extends('shared.master') @section('title', 'Dashboard') @section('pagecss') <link rel="styles

我有一个视图文件users.blade.php,它扩展了master。主文件包含另一个名为header.blade.php的文件,我想将一些数据从users.blade传递到header.blade

以下是这些文件的简化版本

/****** Users.blade.php *********/
@extends('shared.master')
@section('title', 'Dashboard')

@section('pagecss')
    <link rel="stylesheet" href="links to css file" />
@endsection
/****Users.blade.php*********/
@扩展('shared.master')
@节(“标题”、“仪表板”)
@节('pagecss')
@端部
这是master.blade.php

/******Shared/master.blade.php ********/
<html>
    <head>
        <title>@yield('title')</title>
        @include('shared.header')
    </head>
    <body >

        @yield('content')

    </body>
</html>
/****Shared/master.blade.php********/
@收益率(‘所有权’)
@包括('shared.header')
@产量(‘含量’)
这是头文件

/******Shared/header.blade.php ********/
<link rel="stylesheet" href="links to bootstrap" />
@yield('pagecss')
<link rel="stylesheet" href="links to other files" />
/******共享/header.blade.php********/
@收益率('pagecss')
@yield('pagecss')在header.blade中不起作用,但在master.blade中起作用。现在我无法将其粘贴到master.blade中,因为有些文件会覆盖其他文件,因此它必须按特定顺序。你知道如何在header.blade中实现产量吗

编辑: 我确实喜欢Bharat Geleda方法,我已经修改了代码,加入了一些heredocs,使之更方便。但我认为这是一种黑客行为,仍然在寻找更好的解决方案

/********** Users.blade.php ***********/
@extends('shared.master')
@section('title', 'Dashboard')

@section('pagecss')
    <link rel="stylesheet" href="links to css file" />
@endsection

<?php $pagecss = <<<CSS_FILES
<link rel="stylesheet" href="links to page css" />
CSS_FILES;
?>

/*********** Shared/header.blade.php **********/
@if(isset($pagecss))
    {{-- */ echo $pagecss;/* --}}
@endif
/*********Users.blade.php***********/
@扩展('shared.master')
@节(“标题”、“仪表板”)
@节('pagecss')
@端部
/***********共享/header.blade.php**********/
@如果(isset($pagecss))
{{--*/echo$pagecss;/*--}
@恩迪夫

一个可能的解决方案是这样做

<?php $pagecss = '<link rel="stylesheet" href="links to css file" />'?>
    /****** Users.blade.php *********/
    @extends('shared.master')
    @section('title', 'Dashboard')

/******Users.blade.php*********/
@扩展('shared.master')
@节(“标题”、“仪表板”)
master.blade.php将保持不变

/******Shared/master.blade.php ********/
<html>
    <head>
        <title>@yield('title')</title>
        @include('shared.header')
    </head>
    <body >

        @yield('content')

    </body>
</html>
/****Shared/master.blade.php********/
@收益率(‘所有权’)
@包括('shared.header')
@产量(‘含量’)
然后在你的头文件中,你可以这样做

/******Shared/header.blade.php ********/
<link rel="stylesheet" href="links to bootstrap" />
@if(isset($pagecss))
    {{ $pagecss }}
@endif
<link rel="stylesheet" href="links to other files" />
/******共享/header.blade.php********/
@如果(isset($pagecss))
{{$pagecss}}
@恩迪夫
编辑:测试问题

main.blade.php(在您的情况下为master)


@包括('test.header')
@产量(‘含量’)
header.blade.php

<link rel="stylesheet" href="links to bootstrap" />
@yield('pagecss')
<link rel="stylesheet" href="links to other files" />
@extends('test.main')

@section('content')
    CONTENT
@endsection

@section('pagecss')
    <link rel="stylesheet" href="links to css file" />
@endsection

@收益率('pagecss')
users.blade.php

<link rel="stylesheet" href="links to bootstrap" />
@yield('pagecss')
<link rel="stylesheet" href="links to other files" />
@extends('test.main')

@section('content')
    CONTENT
@endsection

@section('pagecss')
    <link rel="stylesheet" href="links to css file" />
@endsection
@extends('test.main'))
@节(“内容”)
内容
@端部
@节('pagecss')
@端部
输出:

<html>
<head>
    <link rel="stylesheet" href="links to bootstrap" />
    <link rel="stylesheet" href="links to css file" />
    <link rel="stylesheet" href="links to other files" />
</head>
<body >

    CONTENT

</body>
</html>

内容

我想这是意料之中的。

如果它在主页上工作,而不是在内部视图中工作,那么很简单,这意味着您已经使用了它,Blade将只使用更高级别并解决它(包括它应该放在
@yield
中的内容)

我想说的是,如果在头文件中有一个
@yield
,并将其用作
@section('pagecss')
,那么稍后您会得到另一个视图,就像您的案例中的
Users.blade.php
一样,使用相同的语句
@section('pagecss')
blade不会使用内部视图

解决方案

好方法但愚蠢:

<html>
<head>
    <link rel="stylesheet" href="links to bootstrap" />
    <link rel="stylesheet" href="links to css file" />
    <link rel="stylesheet" href="links to other files" />
</head>
<body >

    CONTENT

</body>
</html>
在共享头文件中创建另一个
@yield
,并将其命名为二级或类似级别。i、 e
@yield('pagecss-2')

好方法:

<html>
<head>
    <link rel="stylesheet" href="links to bootstrap" />
    <link rel="stylesheet" href="links to css file" />
    <link rel="stylesheet" href="links to other files" />
</head>
<body >

    CONTENT

</body>
</html>
使用
@parent
,此指令将向版面追加(而不是覆盖)内容


中所述,感谢您的回复,我已编辑了我的问题,并将寻找更好的方法。如果我找不到更好的解决方案,我会接受你的回答:)是的,你的编辑正是我所需要的,但它对我不起作用,让我再试一次Hanks bharat,我只是再试了一次,现在它起作用了。我不确定,如果你最近做了很多梦:)但是非常感谢你花时间运行这段代码。你帮我省去了很多麻烦。没有问题,一切顺利。:)嘿,你试过你要的东西了吗。我只是试了一下,它看起来和预期的一样完美。我已经编辑了我的答案。