在视图laravel 5中包含控制器

时间:2015-09-14 07:59:49

标签: php laravel-5

我是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);
    }

}

2 个答案:

答案 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