我是laravel的新手,我被卡住了。
我的问题是我想要2个具有动态数据的部分(导航,内容)
这里有一些代码 主刃
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Portfolio</title>
</head>
<body>
<div class="navigation">
@yield('menu')
</div>
<div class="content">
@yield('content')
</div>
</body>
</html>
投资组合刀片
@extends('main')
@section('content')
@foreach($data as $portfolio)
<a href="portfolio/{!!$portfolio->portfolio_url!!}"><img src='{{ URL::asset("images/$portfolio->picture.jpg") }}'/></a>
@endforeach
@stop
和我的导航刀片
@extends('main')
@section('menu')
@foreach($menuknoppen as $menuknop)
<a href='{{ URL::to("$menuknop->menu_url") }}'>{{$menuknop->menutitle}}</a>
@endforeach
@stop
投资组合刀片有一个控制器,但菜单刀片还有一个控制器
EDIT1:
问题是导航即使我添加静态文本也不显示
EDIT2:
我的控制器 我的组合控制器
/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
public function index(){
//here comes a whole list with what i've done
$results = DB::table('projects')->get();
//return $results;
$data = array();
foreach ($results as $key => $result) {
$data[] = $result;
}
return view('portfolio.portfolio')->with('data', $data);
}
public function getProject($portfolio_url){
//this gets the project thats clicked
$results = DB::select('select * from projects where portfolio_url = ?', array($portfolio_url));
return view('portfolio.single')->with('data', $results['0']);
}
}
我的导航控制器
class menuController extends Controller {
/**
* Show the profile for the given user.
*
* @param int $id
* @return Response
*/
// public function __construct($table){
// $results = DB::table($table)->get();
// return view('menu')->with('menuknoppen', $results);
// }
public function index(){
$results = DB::table('navigation')->get();
return view('menu')->with('menuknoppen', $results);
}
}
答案 0 :(得分:3)
你的主刀片应该是:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Portfolio</title>
</head>
<body>
<div class="navigation">
@include('menu');
</div>
<div class="content">
@yield('content')
</div>
</body>
</html>
您的投资组合应该是:
@extends('main')
@section('content')
@foreach($data as $portfolio)
<a href="portfolio/{!!$portfolio->portfolio_url!!}"><img src='{{ URL::asset("images/$portfolio->picture.jpg") }}'/></a>
@endforeach
@stop
导航栏应该是:
//Don't use extends here
@foreach($menuknoppen as $menuknop)
<a href='{{ URL::to("$menuknop->menu_url") }}'>{{$menuknop->menutitle}}</a>
@endforeach
传递多个数据
public function index()
{
$data = //data code;
$results = // results code
return view(portfolio.portfolio, compact('data', 'results'));
}
答案 1 :(得分:1)
你混淆了@ yield,@ include和@extend
的概念@yield为您提供了替换的位置,因此当您在其他视图中调用@extend时,您可以在视图中重用该模板,并使用@yield
替换该部分。@include表示这部分代码总是被它定义的视图替换
因此,当您设计网页时,您需要确保“始终被称为”(使用@include)以及可以替换的内容(使用@yield)
作为对aldrin27工作代码的一个辅助解释,我希望这会使你的头脑更清晰的刀片模板,它摇滚! :d