Объявите переменную в расширенном блэйде и получите значение в другом блэйде

Как я могу получить значение, которое объявлено внутри layout.blade.php файл другому blade.php.

Вот мой код, который упрощен, чтобы вы поняли:

client.blade.php

<?php
$a = '33';
?>
@extends('layouts.layout')
@section('body')
<?php
echo $b;
?>

в layout.blade.php :

<?php
echo $a;
$b = "hi";
?>

Что происходит, я могу напечатать переменную $a в layout.php файл, но переменная $b что объявлено внутри layout.blade.php не печатает в client.blade.php.

Как я могу сделать это доступным?

0

Решение

Я уверен, что вы не можете сделать это. Как работает шаблон, вы не можете отправить данные «обратно» другим способом. Вы должны объявить переменную в вашем контроллере и передать ее обоим представлениям.

Или вы должны использовать представление композитора, и иметь переменную, автоматически назначаемую при создании представления.

1

Другие решения

Вы не можете сделать это.
Вы должны использовать View::composer как предложено или используйте View::share метод, который позволит вам создать своего рода глобальную переменную, доступную во всех нужных вам представлениях.

Например, вы можете добавить View::share('user', Auth::user()); в вашем BaseController и использовать $user во всех представлениях, представленных контроллерами, которые extends BaseController

Doc: http://laravel.com/docs/4.2/responses#views

1

По вопросам рекламы [email protected]