@FREDF

Как передать переменную из Controller во View в Laravel?

Всем привет!
С помощью Composer установил последнюю версию Laravel.
Столкнулся с банальной проблемой..
Хочу передать во View переменную, но ничего не получается.

В Controller (HomeController.php) указал следующее:

public function showWelcome(){
	$data['cheese'] = 'My pretty variable';
	return View::make('hello', $data);
}


Во View (hello.blade.php):

{{ $data['cheese'] }}
{{ $cheese }}
{{ cheese }}
<? echo $cheese; ?>
<? echo $data['cheese']; ?>


Ни одна из этих конструкций не работает. Ответ debug: Undefined variable
Подскажите, что я делаю не так? Если кому не лень, объясните на пальцах вкратце как работает MVC в Laravel вообще.

P.S.: Проблема решена. В файле app/routes.php был указан сразу вывод View (в обход контроллера)

Решение:

/*
Route::get('/', function()
{
	return View::make('hello');
});
*/

Route::get('/', 'HomeController@showWelcome');
  • Вопрос задан
  • 7073 просмотра
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
Вообще, у вас там какая-то аномалия.

Прекрасно работает:
public function showWelcome(){
    $data['cheese'] = 'My pretty variable';
    return View::make('hello', $data);

    // or
    return View::make('hello', ['cheese' => 'My pretty variable']);

    // or
    $cheese = 'My pretty variable';
    return View::make('hello', compact('cheese'));
}

{{ $cheese }}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@FREDF Автор вопроса
Данные решения не срабатывают.

35fa6a01f84b473093770015098abed1.png
Ответ написан
Комментировать
AloneCoder
@AloneCoder
[object Object]
Ну по идее {{ $cheese }} нужно
Ответ написан
zvermafia
@zvermafia
WebDev
Controller:
public function showWelcome()
{
    $data['cheese'] = 'My pretty variable';

    return View::make('hello', array(
        'data' => $data,
    );
}


View:
{{ $data['cheese'] }}

Или можно использовать compact():
public function showWelcome()
{
    $data['cheese'] = 'My pretty variable';

    return View::make('hello')->compact('data');
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы