MonaMuhr
MonaMuhr

Reputation: 185

It can not find my variable in my view in laravel 5.6

<?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);
    }

this is a part of my controller, i can show news and events in my view but everytime it says it can not find the variable user?

i dont know why because i dont know why it shows me the other variables but not the user variable???

in my view i can see the other variables like this:

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

but i want to show user like this:

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

i tried everything so i tried so look my controller like this:

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

or get the variable via compact and i tried exactly the same so like this

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

and a foreach in my view but it can not found the variable user??

i dont know why

this is the error

Undefined variable: users 

Upvotes: 1

Views: 718

Answers (5)

user10186369
user10186369

Reputation:

You should try this:

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);
}

Upvotes: 0

Salman Zafar
Salman Zafar

Reputation: 4035

You are not passing variables to view correctly use with or compact to pass variables to view. i prefer compact as it is simple and easier.

Passing data to view using 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'));
    }

Passing variables to view using with:

 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]);
        }

Upvotes: 0

Daniel
Daniel

Reputation: 1041

I am not sure how the helper view() handles the 4th parameter you are passing. According to the docs you can pass data like this:

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

or

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

Maybe give this way a try.

Edit: The view() helper accepts 3 Parameters: $view = null, $data = [], $mergeData = [] so the 4th parameter you are trying to pass is not even working. You have to pass your data as second parameter or with the chained function with(array $data).

Upvotes: 1

Sand Of Vega
Sand Of Vega

Reputation: 2416

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

Upvotes: 1

Nitin Vaghani
Nitin Vaghani

Reputation: 307

You have to return value in view like below method:

Change this line

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

To

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

Now, You will get result inside your view using 'users'.

Upvotes: 0

Related Questions