sandip kakade
sandip kakade

Reputation: 1356

how to pass array controller to view.blade.php in laravel 5

Hello i am little bit confuse how to pass array controller to view this is my code.when pass array to view and in the view print {{ $menus }} i facing undefind varible in sidemenu.blade.php.

HomeController

    <?php

namespace App\Http\Controllers;

use App\Http\Requests;
use Illuminate\Http\Request;
use App\Menu;
use DB;
/**
 * Class HomeController
 * @package App\Http\Controllers
 */
class HomeController extends Controller
{

    public function __construct()
    {
        $this->middleware('auth');
    }

    public function index()
    {        
        return view('home');
    }

    public function side_menu()
    {
        $menus = DB::collection('menus')->get();
        return view('partials.sidebar', compact('menus'));
    }
}

my view

<ul class="sidebar-menu">
        <li class="header">HEADER</li>
        <!-- Optionally, you can add icons to the links -->
        @if(count($menus)>0)
            @foreach ($menus as $post)                    
                <li class="active"><a href="{{ url('home') }}"><i class='fa fa-link'></i> <span>{{ $post->menu_name }}</span></a></li>
            @endforeach
        @endif

    </ul>

Upvotes: 2

Views: 1848

Answers (3)

Filip Koblański
Filip Koblański

Reputation: 9988

You're controller method should looks like:

public function side_menu()
{
    $menus = DB::table('menus')->get();
    return view('partials.sidebar', compact('menus'));
}

You should change the view like this:

<ul class="sidebar-menu">
    <li class="header">HEADER</li>
    <!-- Optionally, you can add icons to the links -->
    @if($menus->count()>0)
        @foreach ($menus as $post)                    
            <li class="active"><a href="{{ url('home') }}"><i class='fa fa-link'></i> <span>{{ $post->menu_name }}</span></a></li>
        @endforeach
    @endif
</ul>

Use $menus->count() rather then: count($menus).

Upvotes: 1

DsRaj
DsRaj

Reputation: 2328

$menus = DB::collection('menus')->get();
return view('partials.sidebar', array('menus'=>$menus,'title'=>'Test'));

In your view you can use $menus and $title variables

Upvotes: 0

JohnDotOwl
JohnDotOwl

Reputation: 3755

return view('greetings', ['name' => 'Victoria']);

Refer to https://laravel.com/docs/5.2/views#passing-data-to-views

Upvotes: 0

Related Questions