我想为我的fastfat
重复使用相同的return View::make('pages.home');
模板视图,但我不确定如何将视图连接到该控制器。
我假设我需要在控制器UserController
中放置一些东西,但我不确定这是我第一次使用Laravel。
这是我目前的代码:
index
Routes.php
<?php
Route::get('/home', function () {
return View::make('pages.home');
});
Route::get('/', 'UserController@index');
Route::get('user/{id}', 'UserController@show');
Route::get('/foo', function () {
return 'taobao';
});
UserController.php //simplified
答案 0 :(得分:1)
你可以试试这个
public function index()
{
$this->oauth();
$user = ['name' => 'James'];
return view('user', compact('user'));
}
现在您可以在用户视图中拨打$user
了。
示例(使用刀片):{{ $user['name'] }}
,输出为James
答案 1 :(得分:1)
您不需要将视图连接到Laravel中的控制器。您只需将视图放在特定位置(默认或预期)。
创建视图并存储在视图目录中后,您可以在任何控制器内调用它。 MVC中的视图和控制器之间没有严格的连接。
您只需要从所需的任何控制器操作返回return View::make('pages.home');
,并多次重复使用它。或者,您可以使用帮助器return view('pages.home');
希望这就是你所寻求的。
答案 2 :(得分:1)
您无需在Controller的index()
方法中添加任何特定内容。将控制器看作是掌控的大脑......“控制”将会发生什么,要么对数据库进行长时间查询,要么计算某些操作,返回视图,要么将所有操作组合起来。
在上面的代码中Route::get('/', 'UserController@index');
实际上绑定了/
“地址”或路由到index()
的方法UserController
。
关于您提出的问题,您需要拆分pages.home
视图,以便可以重复使用。我建议您阅读templates文档。
简而言之,您可以拥有以下页面,名为base.blade.php
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Page</title>
<!-- Bootstrap includes -->
<!-- JS Includes -->
</head>
<body>
<nav>
<ul>
<li><a href="#">Link 1</a></li>
<li><a href="#">Link 2</a></li>
</ul>
</nav>
<div class="content">
@yield('content')
</div>
</body>
</html>
然后,我们可以再创建2个页面。
users.blade.php
:
@extends('layouts.base')
@section('content')
<div> Hello Users!</div>
@endsection
admins.blade.php
:
@extends('layouts.base')
@section('content')
<div> Hello Admins!</div>
@endsection
这两个刀片模板会在其对应的部分(在本例中为内容)中将HTML注入模板base.blade.php
。这样,您可以“重用”视图,这非常有效,因为更改base.blade.php
将更改“注入”或从其继承的所有视图。
现在,就像你说的那样,为了将视图“连接”到控制器,你只需要从该控制器的方法中返回一个视图。例如:
MyController.php
:
MyController extends Controller{
...
public function index()
{
// Fancy stuff you might wanna do...
// Note this will pull the view from within the layout folder
return view('users');
}
}
当然,你需要有一个与那个Controller和那个方法配对的路由,在这种情况下你可以这样做。
我希望这有帮助!
干杯!
答案 3 :(得分:1)
如果您需要在UserController中重复使用相同的return View::make('pages.home');
或主视图,可以将其称为
return view('home', ['name' => 'James']);
或者您需要在用户视图中包含主视图,然后才能执行
@extends('home') or @include('home')
答案 4 :(得分:1)
我想你应该试试这个:
在user.blade.php
@include('pages.home')