Laravel의 블레이드 템플릿을 사용하여 레이아웃에 변수를 어떻게 전달합니까?
Laravel 4에서 컨트롤러는 블레이드 레이아웃을 사용합니다.
class PagesController extends BaseController {
protected $layout = 'layouts.master';
}
마스터 레이아웃은 변수 제목을 출력 한 다음보기를 표시합니다.
...
<title>{{ $title }}</title>
...
@yield('content')
....
그러나 내 컨트롤러에서는 레이아웃이 아닌 하위 뷰에만 변수를 전달할 수있는 것으로 보입니다. 예를 들어 작업은 다음과 같습니다.
public function index()
{
$this->layout->content = View::make('pages/index', array('title' => 'Home page'));
}
이것은 $title
뷰의 컨텐츠 섹션 에만 변수를 전달합니다 . 전체보기 또는 최소한 마스터 레이아웃에 해당 변수를 제공하려면 어떻게해야합니까?
@extends
콘텐츠 레이아웃에서 사용하는 경우 다음을 사용할 수 있습니다.
@extends('master', ['title' => $title])
Laravel 5를 사용하는 미래의 Google 직원을 위해 이제 include와 함께 사용할 수도 있습니다.
@include('views.otherView', ['variable' => 1])
이 문제를 컨트롤러 메서드에 추가하여이 문제를 해결할 수있었습니다.
$title = 'My Title Here';
View::share('title', $title);
$ this-> layout-> title = '홈 페이지'; 또한 작동하지 않았습니다.
블레이드 템플릿에서 : 다음과 같은 변수 정의
@extends('app',['title' => 'Your Title Goes Here'])
@section('content')
그리고 app.blade.php 또는 원하는 다른 곳에서 (기본 Laravel 5 설정을 따르고 있습니다)
<title>{{ $title or 'Default title Information if not set explicitly' }}</title>
이것이 나의 첫 번째 대답입니다. 잘 되길 바랍니다. 행운을 빕니다!
레이아웃 객체의 속성을 사용하여 전체 레이아웃에 변수를 전달할 수있는 것처럼 보입니다. 예를 들어 내 문제를 해결하기 위해 다음을 수행 할 수있었습니다.
$this->layout->title = 'Home page';
가장 간단한 해결 방법 :
view()->share('title', 'My Title Here');
또는 View Facade 사용 :
use View;
...
View::share('title', 'My Title Here');
class PagesController extends BaseController {
protected $layout = 'layouts.master';
public function index()
{
$this->layout->title = "Home page";
$this->layout->content = View::make('pages/index');
}
}
블레이드 템플릿 파일에서 변수 앞에 @를 사용해야합니다.
...
<title>{{ $title or '' }}</title>
...
@yield('content')
...
당신은 시도 할 수 있습니다:
public function index()
{
return View::make('pages/index', array('title' => 'Home page'));
}
$data['title'] = $this->layout->title = 'The Home Page';
$this->layout->content = View::make('home', $data);
보기와 마스터 파일이 모두 필요했기 때문에 지금까지이 작업을 수행했습니다. $ this-> layout-> title을 사용하지 않으면 마스터 레이아웃에서 사용할 수 없습니다. 개선을 환영합니다!
'Program Tip' 카테고리의 다른 글
필드를 비활성화하지 않고 사용자가 텍스트 필드에 입력하는 것을 방지하는 방법은 무엇입니까? (0) | 2020.11.12 |
---|---|
Zipalign-명령을 찾을 수 없음-MAC 터미널 (0) | 2020.11.12 |
2 개의 고유 한 명령을 사용할 때 "이 명령과 관련된 열린 DataReader가 이미 있으며 먼저 닫아야합니다."오류 (0) | 2020.11.12 |
RabbitMQ 3.3.1은 게스트 / 게스트로 로그인 할 수 없습니다. (0) | 2020.11.12 |
Android Studio에서 제목 표시 줄을 제거하려면 어떻게합니까? (0) | 2020.11.12 |