声明数组变量在视图中未定义但在laravel 5.7中使用控制器时该怎么办

问题描述 投票:0回答:2

这是代码:

    public function chat($id=1){

    Route::view('/chat', 'chat');

    $id = View::make('chat.blade', ['reviewer_id' => Reviewer::findOrFail($id)]);

    $audiences = DB::table('audience')->get();

    $data = [
             'id'=>$id,
             'audiences'=>$audiences,
             'audience_id'=> 2
            ];
    return View::make('chat.blade', ['data'=>$data]);

}

由于代码很简单,我路由到刀片视图,从数据库获取数据,获取受众数据,初始化数据数组返回数据到chat.blade简单代码但在视图中

未定义的变量:data(查看:/Users/userinfo/Sites/chat/resources/views/chat.blade.php)

查看代码:

        <div>
        @foreach($data->audiences as $info->audience)
            {{$info->audience->id}};
        @endforeach
        </div>
        <div>
            <form action="/" method="post">
                <input type="hidden" value={{$reviewer_id}} name="id">
                <input type="hidden" value={{$audience_id}} name="id">
                <input type="text" name="message">
                <input type="submit" value="submit">
            </form>
        </div>



<?php $__currentLoopData = $data->audiences; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $info->audience): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
                <?php echo e($info->audience->id); ?>;
            <?php endforeach; $__env->popLoop(); $loop = 
$__env->getLastLoop(); 

?>

>未定义的变量$ data

php laravel laravel-5.7
2个回答
0
投票

在你看来,将$data->audiences改为$data['audiences']。 $ data是一个数组而不是一个对象


0
投票

如果我这样做,那么我这样做

public function chat($id = 1){
    Route::view('/chat', 'chat'); // I don't know what that is
    $reviewer_id = Reviewer::findOrFail($id); // or Reviewer::find($id); 
    //I Update this little bit : $audiences = DB::table('audience')->get();
    $audiences = Audience::all();
    $audience_id = 2 ;
    return view('chat.blade', compact(['id','audiences','audience_id','reviewer_id']));
}

现在,您可以像这样访问刀片文件中以压缩方式传递的所有变量

<div>
     // Depends on what is in the $audiences could be with "$key => $value" 
     @foreach($audiences as $key)
            {{$key->id}};
     @endforeach
</div>

<div>
   <form action="/" method="post">
     <input type="hidden" value={{$reviewer_id}} name="id">
     <input type="hidden" value={{$audience_id}} name="id">
     <input type="text" name="message">
     <input type="submit" value="submit">
   </form>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.