【问题标题】:How to send multiple variable to a view in laravel when one or more variables are null当一个或多个变量为空时,如何将多个变量发送到 laravel 中的视图
【发布时间】:2023-03-11 04:45:02
【问题描述】:

当新用户注册并被重定向到个人资料页面时。所有这些 $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 让它变得简单。

【问题讨论】:

    标签: php laravel view controller eloquent


    【解决方案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]);
      

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

      【讨论】:

        猜你喜欢
        • 2021-10-13
        • 2019-02-14
        • 1970-01-01
        • 1970-01-01
        • 2019-07-06
        • 1970-01-01
        • 1970-01-01
        • 2019-01-21
        • 1970-01-01
        相关资源
        最近更新 更多