laravel 4中非对象的性质

laravel 4中非对象的性质,laravel,drop-down-menu,laravel-4,blade,Laravel,Drop Down Menu,Laravel 4,Blade,我使用的是Laravel4,当我试图创建一个带有下拉菜单的菜单时,出现了这个错误 正在尝试获取非对象的属性(视图:/Applications/MAMP/htdocs/test/app/views/layouts/master.blade.php)(视图:/Applications/MAMP/htdocs/test/app/views/layouts/master.blade.php) 我看不出我错在哪里 My master.blade.php <li class="dropdown"&g

我使用的是Laravel4,当我试图创建一个带有下拉菜单的菜单时,出现了这个错误

正在尝试获取非对象的属性(视图:/Applications/MAMP/htdocs/test/app/views/layouts/master.blade.php)(视图:/Applications/MAMP/htdocs/test/app/views/layouts/master.blade.php)

我看不出我错在哪里

My master.blade.php

 <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">work<span class="caret"></span></a>
        <ul class="dropdown-menu" role="menu">
            @foreach($dropdowns as $dropdown)
                <li>
                    {{ $dropdown->title }}
                </li>   
            @endforeach
        </ul>
</li>
我的页面模型

public function getPagesSelectList($name, $default = "", $js = "", $flag = true)
{
    $list = array(
                'name' => $name,
                'default' => $default,
                'js' => $js,
                'pages' => $this->getSubPages($flag, $default)
            );

    return (object)$list;
}

public function getSubPages($flag, $default, $parent = 0, $num = 1)
{
    $pages = array();
    $pageSql = \Page::where('parent', '=', $parent)->orderBy('num', 'ASC')->get();
    foreach ($pageSql as $result) 
    {   
        $page = new Page($result->id);
        $page->setFromDatabase();
        $page->default = $default;
        $page->select = '';
        if( $page->id == $default )
            $page->select = $default;
        $page->space = $num;
        if(!empty($page))
            $pages[] = $page;
        $children = $page->getSubPages($flag, $default, $page->id, $num + 1);
        if(!empty($children))
            $pages[] = $children;
    }
    return array_flatten($pages);
}

假设其他代码工作正常,在Blade中,而不是:

@foreach($dropdowns as $dropdown)
<li>
    {{ $dropdown->title }}
</li>
@endforeach
@foreach($dropdowns作为$dropdown)
  • {{$dropdown->title}
  • @endforeach
    你应使用:

    @foreach($dropdowns->pages as $dropdown)
    <li>
        {{ $dropdown->title }}
    </li>
    @endforeach
    
    @foreach($dropdowns->页面为$dropdown)
    
  • {{$dropdown->title}
  • @endforeach
    这是因为在
    getPagesSelectList
    中,您将
    getSubPages
    的结果分配给数组的
    pages
    索引,然后将数组转换为对象

    @foreach($dropdowns->pages as $dropdown)
    <li>
        {{ $dropdown->title }}
    </li>
    @endforeach