我想传递一个公共变量到刀片文件,但我想在组件控制器下处理它。
部件使用情况
<x-membership.my-membership></x-membership.my-membership>
字符串
部件控制器
class MyMembership extends Component
{
/**
* Create a new component instance.
*/
public function __construct(
public $userMembership,
public $showExpired = null,
)
{
$this->userMembership = Auth::user()->user_membership;
Carbon::setLocale(config('app.locale'));
if($this->userMembership){
$this->showExpired = Carbon::parse($this->userMembership->expired_at)->translatedFormat('j F Y');
}
else{
$this->showExpired = null;
}
// When it is null then display regular membership
if(!$this->userMembership){
$this->userMembership = new Membership();
$this->userMembership->membership = Membership::where('price',0)->first();
}
}
/**
* Get the view / contents that represent the component.
*/
public function render(): View|Closure|string
{
return view('components.membership.my-membership');
}
}
型
这是刀片文件
@isset($user_membership)
<div id="myMembership">
<div
class=" text-gray-900 bg-white border border-gray-200 rounded-lg dark:bg-gray-700 dark:border-gray-600 dark:text-white">
<div class="p-2 border-b flex justify-between capitalize">
<span>{{ __('Membership') }}</span>
<span>{{ $user_membership->membership->name }}</span>
</div>
<div class="p-2 {{ $show_expired ? 'border-b' : '' }} flex justify-between capitalize">
<span>{{ __('Max Slot') }}</span>
<span>{{ $user_membership->membership->max_slot }}</span>
</div>
@if ($show_expired)
<div class="p-2 flex justify-between capitalize">
<span>{{ __('Expired At') }}</span>
<div>
<span>{{ $show_expired }}</span>
</div>
</div>
@endif
</div>
</div>
@endisset
型
$user_membership不传递到刀片文件的主要问题。它在localhost下工作,但在生产环境中不工作。
该组件由3个视图使用,这就是为什么我不能直接传递到用法,例如像这样
<x-membership.my-membership :membership="$user_membership"></x-membership.my-membership>
型
使用这一个是工作正常,但我需要在每个控制器上的状态,以检索当前的成员资格,而我只是想从组件控制器读取它。
编辑:我尝试从生产服务器中删除组件控制器进行测试,它仍然可以打开,没有任何问题。
Class "App\View\Components\Membership\MyMembership" not found
型
但为什么在生产中似乎laravel跳过控制器组件,它只是传递到刀片文件,这是类似的看法。我也做了
php artisan cache:clear
php artisan route:clear
php artisan optimize:clear
型
1条答案
按热度按时间qnyhuwrf1#
根据我的观点,我们不能在没有定义任何var的情况下使用Component。
字符串
然后我把它变成这样
型
我知道,声明
型
不会做任何改变,因为结果将为null。然而,如果我们在那里声明一个参数,似乎__construct正在工作。