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


laravel passing database array from controller to view

大家好,下面是我的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'));

有什么问题吗??

我认为你不需要重定向;也许你做错了,相反,你应该使用这样的东西直接将数据传递给视图:

$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

这对我有用…

in view

     @if(Session::has('siteinformation'))
     @foreach (Session::get('siteinformation')as $key => $value) 
     {{ $value->Nickname}}
      @endforeach
     @endif
在控制器

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

你的视图文件没有得到会话设置如果(session::has('siteinformation'))),因为你没有在你的控制器设置会话。您将控制器'siteinformation'设置为正常变量。如果你想设置会话,而不是这个。

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

这样做

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

不要在视图中检查session,而要检查

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

就这样做

if (!empty($siteinformation)) :

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

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