【问题标题】:Property of non-object in laravel 4laravel 4中非对象的属性
【发布时间】:2014-10-02 20:53:27
【问题描述】:

我正在使用 laravel 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>

我的页面控制器

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

【问题讨论】:

    标签: laravel drop-down-menu laravel-4 blade


    【解决方案1】:

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

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

    你应该使用:

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-23
      • 2013-09-06
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 2017-10-07
      • 2018-02-21
      相关资源
      最近更新 更多