2013-06-05 7 views
23

저는 Laravel 4 문서를 읽고 학습을 돕기 위해 데모 응용 프로그램을 만들고 있습니다.Laravel 4 컨트롤러 템플릿/블레이드 - 올바른 방법?

블레이드 및 컨트롤러가 포함 된 뷰 템플릿에 대한 많은 문서를 찾을 수 없습니다. 올바른 방법은 무엇입니까? 아니면 개인 취향에 달려 있습니까?

예 : 1

컨트롤러/HomeController.php

protected $layout = 'layouts.main'; 

public function showWelcome() 
{ 
    $this->layout->title = "Page Title"; 
    $this->layout->content = View::make('welcome'); 
} 

조회/레이아웃/main.blade.php

<html> 
<head> 
    <title>{{ $title }}</title> 
</head> 
<body> 
    {{ $content }} 
</body> 
</html> 

조회/welcome.blade.php

<p>Welcome.</p> 

예. 2

컨트롤러/HomeController.php

protected $layout = 'layouts.main'; 

public function showWelcome() 
{ 
    $this->layout->content = View::make('welcome'); 
} 

조회/레이아웃/main.blade.php

<html> 
<head> 
    <title>@yield('title')</title> 
</head> 
<body> 
    @yield('content') 
</body> 
</html> 

조회/welcome.blade.php

@section('title', 'Welcome') 
@section('content') 
// content 
@stop 

위의 가장 좋은 규칙 및/또는 장점은 무엇입니까?

+0

위의 예와 맞지 않거나 정확한 방법이 맞는지 확인해주세요. – Mediabeastnz

답변

0

필자는보기와 컨트롤러 코드가보다 명확하게 분리되어 있기 때문에 필자는 두 번째 것을 선호합니다. 환영 제목과 매번 환영 제목을 결합하는 대신 제목이 콘텐츠보기의 속성이된다는 것은 나에게 더 논리적 인 것처럼 보입니다.

결국 모두 올바르지 만 작동하지만 두 번째 대안은 유지 관리가 쉽습니다.

+0

나는 동의한다, 나는 계속 사용했다. 그러나 나는이 질문을 여기에 넣는 것이 좋을 것이라고 생각했다. .. 고마워. – Mediabeastnz

0

일부 사이트는 데이터베이스에서 동적으로 생성 된 제목을 가지고 있으므로 첫 번째 방법을 선호합니다. 첫 번째 방법을 사용할 때 제목을 쉽게 전달할 수 있습니다.

+0

대부분의 내용은 데이터베이스에서 가져온 것이 사실이지만, 결과적인 Eloquent 모델을보기에 전달하고 컨트롤러에서 제목을 긁는 대신 제목을 설정해야한다고 생각합니다. 당신은 여전히 ​​컨텐트에 대한 모델을 전달하거나 컨텐트를 설정할 것입니다 (그리고 다른 프로퍼티도 마찬가지입니다). – Aloys

+0

Aloys의 의미를 보여줄 수 있습니까? – thestepafter

+0

이것이 내가 제안한 것입니다 (IoC를 사용하여 도박 할 수는 있지만 지금은 중요하지 않습니다) : http://paste.laravel.com/vre – Aloys

1

나는 둘 중 하나를 좋아하지 않습니다. 레이아웃은 아마도 Laravel에서 가장 이상한 부분 일 것입니다. 컨트롤러 버전은 실제로 의미가 없습니다. 컨트롤러의 모든 메소드는 해당 뷰를 필요로합니다. @yield 버전은 상용구가 엉망입니다. 나는이 "방법 특정 레이아웃"을 만들었습니다 :

나는 이것을 옵션으로 언급해야한다고 생각합니다.

return \View::make('examples.foo')->with('foo', $bar); 

: 내가 사용하는 컨트롤러에 뷰를 반환해야하는 경우 나 컨트롤러에있는 레이아웃 정보를 저장하지 않는

4

, 나는

@extends('layouts.master') 

를 통해 뷰에 저장 뷰가 어떤 레이아웃을 사용할지 컨트롤러를 결정하는지에 따라이 접근법을 선호합니다. 다시 고려해야합니다.