Laravel - 尝试在Collection上获取非对象的属性

时间:2016-10-20 11:48:59

标签: php laravel collections

我试图将一些SEO值传递给刀片视图。

我的刀片视图如下:

@if(!empty($page_data))
        <?php $page_data = $page_data[0]; ?>
        <title>{{ $page_data->page_seo_title }}</title>
        <meta name="description" content="{{ $page_data->page_seo_desc }}">
        <input type="hidden" name="page_id" class="page_id" value="{{ $page_data->page_id }}">
@endif

当我通过以下收集视图时,我收到错误:

  

尝试获取非对象的属性

我的收藏品如下:

Collection {#286 ▼
  #items: array:1 [▼
    0 => array:2 [▼
      "page_seo_title" => "SEO Title"
      "page_seo_desc" => "SEO Desc"
    ]
  ]
}

我正在构建集合,如下所示:

// Set Page Data
            $page_data  = collect(
                [
                    [
                        'page_seo_title' => 'SEO Title',
                        'page_seo_desc' => 'SEO Desc'
                    ]
                ]
            );

我是否需要在集合中定义其他内容以使其获得&#39;拿起来了?

值得指出的是,page_data适用于在其上运行Eloquent Query的页面,因此这不是问题。它&#39;只是这些动态页面,我需要设置。理想情况下,我不需要更改刀片/视图逻辑。只是集合/控制器逻辑。

2 个答案:

答案 0 :(得分:0)

我已经根据您的代码更新了一些小例子,并且已经测试了一次

 $page_data  = collect(
                        [
                            [
                                'page_seo_title' => 'SEO Title',
                                'page_seo_desc' => 'SEO Desc'
                            ]
                        ]
                    );

//here it will print all data 
                    print_r($page_data->toArray());

                    $data=$page_data->toArray();

// here it will print particular data
                echo    $data[0]['page_seo_title'];

<强>更新

控制器中的

$data=$page_data->toArray();

        return view('viewname',['data',$data];

在你的刀片中

@if(!empty($data))
    <?php $new_data = $data[0]; ?>
    <title>{{ $new_data['page_seo_title'] }}</title>
    <meta name="description" content="{{ $new_data['page_seo_desc'] }}">
    <input type="hidden" name="page_id" class="page_id" value="{{ $new_data['page_id'] }}">

答案 1 :(得分:0)

您的收藏中没有page_id属性,但您可以在刀片视图中访问该属性。 请检查你的那条

<input type="hidden" name="page_id" class="page_id" value="{{ $page_data->page_id }}">

您可以访问page_id,但您的收藏中不包含带有page_id的属性。