当一个或多个变量为空时,如何将多个变量发送到 laravel 中的视图

Posted

技术标签:

【中文标题】当一个或多个变量为空时,如何将多个变量发送到 laravel 中的视图【英文标题】:How to send multiple variable to a view in laravel when one or more variables are null 【发布时间】:2017-06-25 13:34:40 【问题描述】:

当新用户注册并被重定向到个人资料页面时。所有这些 $userconatact$qualification$profileimage 变量都是空的。主页使用if (condition) 设置,具有填写表格或向用户显示可用数据的按钮。共有三种表格,用户必须一一填写这些表格。所有这些变量或其中一个变量都可能为空,但我仍想将空值发送给查看。有什么办法可以实现这种观点。

    class ProfileController extends Controller

    public function showprofile($type=null, $id='id')
      $contactquery = Usercontact::where('user_id',Auth::user()->id)->select('*')->get();
      $usercontact = $contactquery->toArray();
      $qualificationquery = userqualification::where('user_id',Auth::user()->id)->select('*')->get();
      $qualification = $qualificationquery->toArray();
      $profileimagequery = Profileimage::where('user_id',Auth::user()->id)->select('id','user_id','profileimage')->get();
      $profileimage = $profileimagequery->toArray();

      return view('home')->withUsercontact($usercontact)->withQualification($qualification)->withProfileimage($profileimage);


    

我尝试使用 if 语句,但 if 不起作用

return view('home')
if(!empty($usercontact))->withUsercontact($usercontact)
if(!empty($qualification))->withQualification($qualification)
if(!empty($profileimage))->withProfileimage($profileimage);

有什么方法可以像这样使用if statements 让它变得简单。

【问题讨论】:

【参考方案1】:

1) 使用 compact 会自动为您创建键值对。

return view('home')->compact('usercontact','qualification','profileImage')

2) 以下是对您的代码的一些其他改进。您可以使用 Auth 门面来访问已登录的用户。

$usercontact = Auth::user();

3) 在您的用户模型上定义relationships 并通过它访问资格。这将返回一个集合。

$qualification = $usercontact->qualifications;

【讨论】:

我的变量包含数组,并且该紧凑返回无用的空值【参考方案2】:

您可以使用compact 将数据从控制器发送到视图。

return view('home')->compact('usercontact', 'qualification', profileimage');

您的代码可以重构如下。

 public function showprofile($type=null, $id='id')
        
          $usercontact = Usercontact::where('user_id',Auth::user()->id)->first();
          $qualification = Userqualification::where('user_id',Auth::user()->id)->first();
          $profileimage = Profileimage::where('user_id',Auth::user()->id)->select('id','user_id','profileimage')->first();

         return view('home')->compact('usercontact', 'qualification', 'profileimage'); 
        

根据约定注意代码中的 Userqualification 模型名称。尝试向您的模型添加关系以使您的查询更容易。

【讨论】:

【参考方案3】:

试试这个样式发送数据到视图

return view('home',['Usercontact'=>$usercontact,'Qualification'=>$qualification,'Profileimage'=>$profileimage]);

在视图中您将能够通过数组键获取数据

【讨论】:

以上是关于当一个或多个变量为空时,如何将多个变量发送到 laravel 中的视图的主要内容,如果未能解决你的问题,请参考以下文章

当 1 个或多个 TextBox 字段为空时禁用按钮

仅当变量不为空时,如何应用 Hasura `where` 过滤器?

将多个变量从 JS 发送到 PHP

Sql Server 2005中当两个整型字段中一个为空时如何比较大小?

当多个输入可以为空时,在 Django 中使用 Q 进行过滤

如何在 Perl 中检查多个变量是不是为空