【问题标题】:Undefined variable in view if passing from controller如果从控制器传递,则视图中未定义的变量
【发布时间】:2021-10-14 18:26:46
【问题描述】:

我正在使用 Easypost.com api,在控制器中获取速率并将变量通过紧凑传递给视图。

return view ('pages.rates', compact('shipment'));    

鉴于我正在执行 foreach 以显示所有可用的运输方式。 我在与结果相同的视图上有计算器表格。 但是,如果用户是第一次访问该页面,则变量 $shipment 尚未设置并出现错误:未定义变量。 我试图提出这样的条件:

@if (isset($shipment)
   @foreach $shipment->rates as $rate
   //rest of code (there are some ifs as well)
   @endforeach
@else
No rates found
@endif

但它给了我同样的错误。 你能帮我检查一下是否设置了传递给视图的变量吗?如果没有,我需要一个选项来显示类似:没有找到费率。 我也试过@isset,但它是一样的。 谢谢

【问题讨论】:

  • @if (isset($shipment) 缺少结束 )。您是否在控制器中 dd($shipment); 检查它是否已设置?

标签: php laravel


【解决方案1】:

检查$shipment 是否已设置并包含费率

    @forelse ($shipment->rates as $rate)
        //rest of code (there are some ifs as well)
    @empty
        No rates found
    @endforelse

【讨论】:

    【解决方案2】:

    谢谢。我正在使用会话,所以我在控制器的函数中创建了 if 语句:

     if (session()->missing('weight')) {     
          
            Session::put('from_address_street1', 'Street');
            Session::put('from_address_city', 'Atlanta');
            Session::put('from_address_state', 'GA');
            Session::put('from_address_zip', '30092');
            Session::put('from_address_country', 'US');
            Session::put('weight', '4');
        }
    

    所以我正在检查会话中是否存在体重,如果没有,如果会话尚未设置,它会为计算器提供默认值。 这解决了我的问题。谢谢

    【讨论】:

      猜你喜欢
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-30
      • 2019-01-29
      • 1970-01-01
      相关资源
      最近更新 更多