2014-10-02 65 views
0

我使用laravel 4,当我试图创建一个菜单下拉房产4

试图让非对象的属性,我得到这个错误(查看:/Applications/MAMP/htdocs/test/app/views/layouts/master.blade.php)(查看:/Applications/MAMP/htdocs/test/app/views/layouts/master.blade.php)

我看不到我要去哪里错了

我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> 

我的PageController

$currentPage = new Page($pages[0]->id); 
$dropdowns = $currentPage->getPagesSelectList("parent", "", ""); 
return View::make('index', compact('dropdowns')); 

我的页面模型

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

回答

0

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

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

你应该使用:

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

这是因为在getPagesSelectList中,您将getSubPages的结果赋值给pages数组的索引,然后将数组转换为对象。

+0

是的工作。谢谢 – user3323889 2014-10-02 13:11:48