为什么我在Laravel 4.1中得到`Undefined variable`?

时间:2015-03-02 02:06:22

标签: php laravel laravel-4

我正在尝试将一个变量从Controller传递给View:

控制器

class StaticDataController extends BaseController {

    public $layout = 'layouts.default';

    public function showIndex()
    {
        return View::make('index', array('test'=>'Hello World'));
    }

} 

查看

@extends('layouts.default')

@section('content')
    {{ $test }}
@stop

布局

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

并收到以下错误:

Undefined variable: test (View: /srv/www/htdocs/test/app/views/index.blade.php) 

这是我的结构:

enter image description here

P.S:

[routes.php文件]

<?php

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

3 个答案:

答案 0 :(得分:0)

尝试

return View::make('index')->with('test'=>'Hello World');

答案 1 :(得分:0)

  

Laravel允许您轻松定义单个路径来处理每个路径   控制器中的动作。首先,使用the定义路线   Route :: controller方法:

您的路线不正确,必须更改为与此行类似:

Route::controller('users', 'UserController');

或改为:

Route::get('/', function()
{
     return View::make('index')->with('test', $test); 
});

和您的控制人员:

class UserController extends BaseController {

    public function getIndex()
    {
        return View::make('index', array('test'=>'Hello World'));
    }

    public function postProfile()
    {
        //
    }

    public function anyLogin()
    {
        //
    }
}

然后您可以轻松访问视图中的varibale,例如:

{{test}}

答案 2 :(得分:0)

尝试:

在你的控制器内:

$test = array("foo", "bar", "hello", "world");
return View::make('index',compact('test'));

在你的观点中:

@foreach($test as $value)
   <p>{{$value}}</p>
@endforeach