laravel将数据库数组从控制器传递到视图

时间:2014-06-04 03:48:08

标签: php laravel laravel-4 blade

你好,这里的人是controller

下面的代码
$siteinformation = DB::table('siteinformation')->where('Site',$myarr[0]['site'])->select()->get();

print_R($siteinformation); will display

Array ( [0] => stdClass Object ( [Site] => site1 [Nickname] => friend [ProgramID] => 1 [CreateDateTime] => 2014-06-03 18:05:39 ) )

我正在尝试将其传递给视图

return Redirect::to('sbs_site')->with('siteinformation',$siteinformation);

在我看来,我有......

@if(Session::has('siteinformation'))
@foreach ($siteinformation as $key => $value) 

{{ $value->Nickname }}

@endforeach
    @endif

我得到错误Undefined variable: siteinformation

我的路线文件包含... Route::post('sbs_site', array('uses' => 'myController@sys_config'));

可能是什么问题?

4 个答案:

答案 0 :(得分:2)

我认为你不需要重定向;可能你做错了,而是应该使用类似的东西直接将数据传递给视图:

$siteinformation = DB::table('siteinformation')
                     ->where('Site',$myarr[0]['site'])
                     ->get();
// View Name: "sbs_site.blade.php"
return View::make('sbs_site')->with('siteinformation', $siteinformation);

然后在视图中:

@foreach ($siteinformation as $value) 

    {{ $value->Site }}
    {{ $value->Nickname }}

@endforeach

但如果你真的需要使用重定向,那么你可以这样做:

// Route Is: "sbs_site"
return Redirect::to('sbs_site')->with('siteinformation', $siteinformation);

然后在你看来:

@if(Session::has('siteinformation'))

    @foreach (Session::get('siteinformation') as $value) 

    {{ $value->Site }}
    {{ $value->Nickname}}

    @endforeach

@endif

答案 1 :(得分:0)

这对我有用......

在视图中

     @if(Session::has('siteinformation'))

     @foreach (Session::get('siteinformation')as $key => $value) 

     {{ $value->Nickname}}

      @endforeach

     @endif

在控制器中

    return Redirect::to('sbs_site')->with('siteinformation',$siteinformation);

答案 2 :(得分:0)

如果(Session :: has(' siteinformation')),您的视图文件未获取会话设置,因为您未在控制器中设置会话。您在控制器中设置了网站信息'作为正常变量。如果你想设置会话,而不是这个。

Redirect::to('sbs_site')->with('siteinformation',$urserializedobj);

这样做

Session::put('siteinformation',$urserializedobj);
Redirect::to('sbs_site');

OR

只是不要在您的视图中检查会话而不是

if(Session::has('siteinformation'))

就这样做

if (!empty($siteinformation)) :

答案 3 :(得分:-1)

我不知道你为什么要重定向将它传递给视图

return View::make('yourview',array('siteinformation'=>$siteinformation));

如果您可以直接从控制器创建视图,这将起到作用 但 如果你需要重定向,我想你可以序列化你的数组或首先将它改为json,因为with函数将数据作为flash传递给所有字符串

$urserializedobj = $siteinformation.toJson();//if this doesn't work try serealizing
return Redirect::to('sbs_site')->with('siteinformation',$urserializedobj );

现在在你看来你可以做到这一点

@if(Session::has('siteinformation'))
 $siteInformation = json_decode(Session::get('siteinformation'));
 @foreach ($siteinformation as $key => $value) 

 {{ $value->Nickname }}

 @endforeach
@endif