在 Laravel->Blade 中放置一些变量的最佳方法

Posted

技术标签:

【中文标题】在 Laravel->Blade 中放置一些变量的最佳方法【英文标题】:best way to put some variable(s) in Laravel->Blade 【发布时间】:2014-05-17 05:37:19 【问题描述】:

我是 Laravel 的新手,如果我想要,例如,默认情况下在所有视图中都有一个可用的变量,有没有比每次都传递该变量更好的方法/

return View::make('views_x.some_view')->with('client_to_show', $client_to_show);

?还是比将它们存储在 Session 中然后在视图中访问它们更好? 我尝试将变量放在布局主控中:

//layout.master.blade.php on top
<?php 
  $str_sel_names        = 'one_value';
?>
<!-- starts template -->
<!DOCTYPE html>
<html lang="en">

但是这个只能在模板布局内访问..不是子视图...

@extends('layouts.master')

@section('content')
...
$str_sel_names

我得到:[ErrorException 未定义变量:str_sel_names(查看:C:\Work\lara_street\laravel\app\views\core\dashboard.blade.php)]

想法?更好的方法?

【问题讨论】:

将它们放在一个数组中,或者作为 StdClass 对象的属性并将其传递给 Blade 是的.. 但在那种情况下,我明白我必须将它明确地传递给视图.. 一遍又一遍。 【参考方案1】:

您可以使用 View Composers:

View::composer(['store.index', 'products.*'], function($view)

    $view->with('client_to_show', $client_to_show);
);

你可以把它放在你的路由文件、过滤器文件中,或者像我一样,创建一个app/composers.php 并通过添加加载

require app_path().'/composers.php';

到您的app/start/global.php 文件。

查看共享是另一种选择:

View::share('client_to_show', $client_to_show);

【讨论】:

我应该把这个view::share call放在哪里? 取决于您如何获取 $client_to_show 的信息。但是您可以将 __construct() 添加到您的控制器中,但如果这是全局性的,您也可以使用像 app/composers.php 这样的文件,正如我在上一个答案编辑中所说的那样。

以上是关于在 Laravel->Blade 中放置一些变量的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

Laravel在插入新记录时在created_at和updated_at中放置null

在我的 Laravel 应用程序中放置以及如何调用辅助函数?

如何在 Laravel Blade 模板中设置变量

是否可以在 Form::submit(' ') 中放置一个引导字形图标 - Laravel

PHPstorm - 无法在blade.php 文件中设置断点

在Laravel项目中放置Crawler脚本的位置?