Php 拉威尔:试图获得财产'';非对象
我正在检索一些要与所有视图共享的变量,为此我使用了laravel的视图生成器 但是,在尝试访问刀片模板中的值时,我遇到以下错误: “正在尝试获取非对象的属性'socialLinks'(视图:C:\xampp\htdocs\Costadog4\resources\views\inicio\index.blade.php)” 完成此操作后:Php 拉威尔:试图获得财产'';非对象,php,laravel,Php,Laravel,我正在检索一些要与所有视图共享的变量,为此我使用了laravel的视图生成器 但是,在尝试访问刀片模板中的值时,我遇到以下错误: “正在尝试获取非对象的属性'socialLinks'(视图:C:\xampp\htdocs\Costadog4\resources\views\inicio\index.blade.php)” 完成此操作后: {{ $allGlobals->socialLinks->twitter }} 我的环球作曲家: <?php namespace App\
{{ $allGlobals->socialLinks->twitter }}
我的环球作曲家:
<?php
namespace App\Http\ViewComposers;
use Illuminate\View\View;
use App\Models\Globals;
use App\Models\Post;
use Auth;
use Config;
class GlobalsComposer
{
public function __construct()
{
// Dependencies automatically resolved by service container...
}
public function compose(View $view)
{
$globals = Globals::all()->pluck('value', 'name');
$socialLinks = [
'twitter' => config('globals.twitter'),
'facebook' => config('globals.facebook'),
'instagram' => config('globals.instagram'),
];
$layoutLinks = [
'classPosts' => Post::withCategory('Clases')->take(10)->get(),
'behaviourPosts' => Post::withCategory('Conducta canina')->take(10)->get(),
'trainingPosts' => Post::withCategory('Formación')->take(10)->get(),
];
$loggedUser = Auth::user();
$allGlobals = compact('globals', 'socialLinks', 'layoutLinks', 'loggedUser');
//dd($allGlobals);
$view->with('allGlobals', $allGlobals);
}
}
社交链接是一个数组。将其更改为:
{{ $allGlobals->socialLinks['twitter'] }}
社交链接是一个数组。将其更改为:
{{ $allGlobals->socialLinks['twitter'] }}
allGlobals
和socialLinks
都是数组,因此您不能使用->
,而是使用['key']
:
{{ $allGlobals['socialLinks']['twitter'] }}
allGlobals
和socialLinks
都是数组,因此您不能使用->
,而是使用['key']
:
{{ $allGlobals['socialLinks']['twitter'] }}
我应该:
{{ $allGlobals->socialLinks['twitter'] }}
因为$allGlobals
是一个对象,而$allGlobals->socialLinks
是一个数组。
因此,如果您尝试像这样访问它,$allGlobals->socialLinks->twitter
,那么您将得到一个错误
尝试访问非对象的属性
我应该:
{{ $allGlobals->socialLinks['twitter'] }}
因为$allGlobals
是一个对象,而$allGlobals->socialLinks
是一个数组。
因此,如果您尝试像这样访问它,$allGlobals->socialLinks->twitter
,那么您将得到一个错误
尝试访问非对象的属性
socialLinks
是一个数组,您可以将其用作:
{{$allGlobals->socialLinks['twitter']}}
或
$socialLinks = [
'twitter' => config('globals.twitter'),
'facebook' => config('globals.facebook'),
'instagram' => config('globals.instagram'),
];
$socialLinks = collect($socialLinks); // Convert array to collection
现在,这应该是可行的:
{{$allGlobals->socialLinks->twitter}
提示:
使用链式方法时使用optional()
方法
{{可选($allGlobals->socialLinks)->twitter}
这消除了“尝试获取非对象的属性”错误,并在缺少socailLinks时返回NULL
或
$socialLinks = [
'twitter' => config('globals.twitter'),
'facebook' => config('globals.facebook'),
'instagram' => config('globals.instagram'),
];
$socialLinks = collect($socialLinks); // Convert array to collection
如果使用PHP7
{{$allGlobals->socialLinks->twitter???“www.defaulturl.com”}
建议转换为收集,因为您的数据将在
$allGlobals
收集中持久化社交链接是一个数组,您可以将其用作:
{{$allGlobals->socialLinks['twitter']}}
或
$socialLinks = [
'twitter' => config('globals.twitter'),
'facebook' => config('globals.facebook'),
'instagram' => config('globals.instagram'),
];
$socialLinks = collect($socialLinks); // Convert array to collection
现在,这应该是可行的:
{{$allGlobals->socialLinks->twitter}
提示:
使用链式方法时使用optional()
方法
{{可选($allGlobals->socialLinks)->twitter}
这消除了“尝试获取非对象的属性”错误,并在缺少socailLinks时返回NULL
或
$socialLinks = [
'twitter' => config('globals.twitter'),
'facebook' => config('globals.facebook'),
'instagram' => config('globals.instagram'),
];
$socialLinks = collect($socialLinks); // Convert array to collection
如果使用PHP7
{{$allGlobals->socialLinks->twitter???“www.defaulturl.com”}
建议转换为集合,因为您的数据将在$allGlobals
集合中持久化,因此您可以看到sociallinks
是数组。那么为什么要使用->
符号呢?所以可以看到sociallinks
是数组。那么为什么要使用->
符号呢?