如果@include 中存在变量,则检查刀片

Posted

技术标签:

【中文标题】如果@include 中存在变量,则检查刀片【英文标题】:check in blade if exists variable in @include 【发布时间】:2021-09-08 14:21:03 【问题描述】:

我正在使用 laravel 7.4 开发一个系统,我需要检查我从控制器发送的一个变量是否存在于我的刀片中。如果存在,包括它:

我的控制器中有这段代码:

public function index()
    
        //Store Image
        $newsItem = User::find(Auth::user()->id);

        if($newsItem->hasMedia('userPhoto'))
            $profilePhoto = $newsItem->getMedia('userPhoto')[0]->file_name;
            $idPhoto = $newsItem->getMedia('userPhoto')[0]->id;

            return view('home')->with('idPhoto', $idPhoto)
                               ->with('profilePhoto', $profilePhoto);

        else if($newsItem->hasMedia('logoSystem'))
            $logoSystem = $newsItem->getMedia('logoSystem')[0]->file_name;
            $idPhotoLogo = $newsItem->getMedia('logoSystem')[0]->id;

            return view('home')->with('idPhotoLogo', $idPhotoLogo)
                               ->with('logoSystem', $logoSystem);
        else
            return view('home');
        
        
        if($newsItem->getMedia('userPhoto') && $newsItem->getMedia('logoSystem'))
            return view('home')->with('idPhoto', $idPhoto)
                                ->with('profilePhoto', $profilePhoto)
                                ->with('idPhotoLogo', $idPhotoLogo)
                                ->with('logoSystem', $logoSystem);
        
        
    

此返回 profile imagesystem image 但可能此图像不存在,我需要先检查一下,因为我的系统有错误,我无法显示我的视图。

之后在我的视图中使用这段代码,我用这条路线创建了一个图像:

-- asset('storage/'.$idPhoto."/".$profilePhoto) --

但之前我需要将此变量发送到我的视图head 并在之后发送到我的侧边栏。

我正在准备这样做:

home.blade.php

@include('layouts.head', (isset([$idPhoto])) ? ["idPhoto" => $idPhoto, "idPhotoLogo" => $idPhotoLogo]  : '')

head.blade.php

@include('layouts.sidebar', ["idPhoto", $idPhoto, "idPhotoLogo" => $idPhotoLogo])

并在我的侧边栏中创建了我的图像:

<img src="-- asset('storage/'.$idPhoto."/".$profilePhoto) --"  class="brand-image">

更新

现在我有这个错误:

在我的 head.blade.php 我有这个:

@if(isset([$idPhoto])
              @include('layouts.sidebar', ["idPhoto", $idPhoto, "idPhotoLogo" => $idPhotoLogo])
            @else
              @include('layouts.sidebar')
            @endif

在我的 home.blade.php 我有这个

@if(isset([$idPhoto])
    @include('layouts.head',["idPhoto" => $idPhoto, "idPhotoLogo" => $idPhotoLogo])
@else
    @include('layouts.head')
@endif 

这个回报:

syntax error, unexpected token ":", expecting "(" (View: C:\wamp64\www\clinicaCampoy\resources\views\home.blade.php)

我需要做的是,如果表格媒体是空的,则加载默认图像,但如果表格媒体有徽标或图像系统,则加载此图像

【问题讨论】:

【参考方案1】:

你可以使用 if 条件

@if(isset($idPhoto))
    @include('layouts.head',["idPhoto" => $idPhoto, "idPhotoLogo" => $idPhotoLogo])
    
@endif

【讨论】:

感谢您的回复,但请返回:Cannot use isset() on the result of an expression(您可以改用“null !== expression”) @scorpions78.updated 有两个选项。让我看看哪一个适合你 我用你的代码的实际问题编辑了我的问题 如果我使用你的第一个代码,我有这个:未定义的变量 $idPhoto(查看: 如果条件更新 .@if(isset([$idPhoto]))

以上是关于如果@include 中存在变量,则检查刀片的主要内容,如果未能解决你的问题,请参考以下文章

如何检查刀片中是不是存在记录?

检查模板中是不是存在变量,如果不存在则不会在记录器中导致错误

检查某个类别中是不是存在帖子不起作用。 php,刀片,Laravel

Laravel 刀片 - 如果满足条件,则添加一个类

使用shell脚本实现用ping检查刀片服务器与主服务器之间的网络连通

Laravel刀片“旧输入或默认变量”?