在laravel 5.6中我找不到它的变量

时间:2018-09-18 06:07:26

标签: laravel variables

<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\News;
use App\User;
use App\Event;

public function index()
    {
        $datanews['newss'] = News::orderBy('created_at','desc')->get();
        $dataevent['events'] = Event::orderBy('created_at','desc')->get();
        $user['users'] = User::all();
        return view('user/aktuelles.index',$datanews, $dataevent,$user);
    }

这是我控制器的一部分,我可以在我的视图中显示新闻和事件,但是每次它说找不到变量用户时,都会显示该消息?

我不知道为什么,因为我不知道为什么它显示了其他变量,但没有显示用户变量?

在我看来,我可以看到其他类似的变量:

@foreach ($newss as $news)
{{$news->newstitel}}
@endforeach 

但是我想向用户显示:

{{$user[1]->avatar}}

我尝试了所有操作,所以我尝试使控制器看起来像这样:

$user = DB::table('users')->get();

或通过紧凑获取变量 我也尝试过完全一样

$user['users'] = User::orderBy('created_at','desc')->get();

在我看来是一个foreach,但是找不到变量user?

我不知道为什么

这是错误

Undefined variable: users 

5 个答案:

答案 0 :(得分:1)

return view('user.aktuelles.index', compact('datanews', 'dataevent', 'user');

答案 1 :(得分:1)

我不确定助手view()如何处理您传递的第四个参数。根据{{​​3}},您可以像这样传递数据:

return view('user/aktuelles.index',[
    'datanews' => $datanews,
    'dataevent' => $dataevent,
    'user' => $user,
]);

return view('user/aktuelles.index')->with([
    'datanews' => $datanews,
    'dataevent' => $dataevent,
    'user' => $user,
]);

也许可以尝试这种方式。

编辑: view()助手接受3个参数:$ view = null,$ data = [],$ mergeData = [],因此您尝试传递的第4个参数甚至无法正常工作。您必须将数据作为第二个参数或链接函数with(array $data)传递。

答案 2 :(得分:0)

您必须按照以下方法在视图中返回值:

更改此行

$user['users'] = User::orderBy('created_at','desc')->get();

收件人

$user = User::orderBy('created_at','desc')->get();
return view('user/aktuelles.index', ['datanews' => $datanews,'dataevent'=> $dataevent,'users'=>$user]);

现在,您将使用“用户”在视图内获得结果。

答案 3 :(得分:0)

您没有传递变量以正确查看,请使用 with compact 传递变量以查看。 我更喜欢紧凑,因为它既简单又容易。

使用紧凑传递数据以进行查看:     

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\News;
use App\User;
use App\Event;

public function index()
    {
        $datanews  = News::orderBy('created_at','desc')->get();
        $dataevent = Event::orderBy('created_at','desc')->get();
        $user      = User::all();
        return view('user.aktuelles.index',compact('datanews', 'dataevent','user'));
    }

使用将变量传递给视图:

 public function index()
        {
            $datanews  = News::orderBy('created_at','desc')->get();
            $dataevent = Event::orderBy('created_at','desc')->get();
            $user      = User::all();
            return view('user.aktuelles.index)->with(['datanews' => $datanews,'dataevent'=> $dataevent,'users'=>$user]);
        }

答案 4 :(得分:0)

您应该尝试以下操作:

use Illuminate\Support\Facades\DB;
use App\News;
use App\User;
use App\Event;

public function index()
{
    $data['news'] = News::orderBy('created_at','desc')->get();
    $data['events'] = Event::orderBy('created_at','desc')->get();
    $data['users'] = User::all();
    return view('user/aktuelles.index', $data);
}