【问题标题】:How to include Laravel Controller file like blade如何包含像刀片这样的 Laravel 控制器文件
【发布时间】:2014-12-27 12:27:49
【问题描述】:

首先我的 master.blade 文件包含使用这个的菜单栏

包含刀片文件 menu.blade.php

 @include('menu')

但最后我意识到要从数据库发送一些数据到菜单栏,然后​​我创建控制器,控制器名称是 MenuController,然后我创建路由“admin-menu”。 现在我想包含指向我的主刀片的链接。如何做到这一点,谢谢,

【问题讨论】:

  • 您的问题是“我如何有条件地在视图中包含部分内容?” (即在某些路线中您想包含menu 和一些admin-menu
  • @alexrussell 不,使用 MenuController 将数据传递给 menu.blade.php,如何将 menu.blade.php 包含在控制器传递的数据中
  • 添加了一个答案,希望能涵盖您将数据传递到视图的所有用例。

标签: laravel laravel-4


【解决方案1】:

要将数据从路由闭包或控制器传递到视图,请执行以下操作之一:

$now = \Carbon\Carbon::now();

View::make('my-view', ['name' => 'Alex', 'date' => $now]);       // pass data into View:::make()
View::make('my-view')->with(['name' => 'Alex', 'date' => $now]); // pass data into View#with()
View::make('my-view')->withName('Alex')->withDate($now);         // use fluent View#with()

所以你只需在 View::make() 调用中使用它们,因为你大概已经是这样了:

// in a route closure
Route::get('some-route', function () {
    return View::make('menu', ['name' => 'Alex']);
});

// in a controller
public function someRoute()
{
    return View::make('menu', ['name' => 'Alex']);
}

有趣的是,在许多框架/模板系统中,如果你想包含一个部分,你会在部分调用中传递你希望在该部分中可用的数据,但 Laravel 并没有完全做到这一点。例如,在一个虚构的系统中,您可能有这样的东西:

// in controller:
$this->render('home', ['name' => 'Alex', 'age' => 30]);

// home.php
<?php echo $name; ?>
<?php echo $this->partial('home-age', ['age' => $age]); ?>

// home-age.php
<?php echo $age; ?>

但是在 Laravel 中,所有当前视图变量都会自动包含在部分视图中。现在我更倾向于指定变量(Blade 确实允许您像上面那样执行此操作),显然它可以用来覆盖视图变量:

// route:
return View::make('home', ['name' => 'Alex', 'age' => 30, 'gender' => 'male']);

// home.blade.php
{{ $name }}
@include('home-extra', ['age' => 20])

// home-extra.blade.php
{{ $age }}
{{ $gender }}

上面的代码会输出:

Alex
20
male

所以年龄在@include 中被覆盖,但未被覆盖的gender 只是传递。希望这是有道理的。

【讨论】:

    猜你喜欢
    • 2013-11-22
    • 1970-01-01
    • 2020-07-04
    • 2018-06-04
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    相关资源
    最近更新 更多