从控制器到视图传递变量给错误

时间:2019-03-31 06:53:45

标签: laravel

我正在通过Compact()将多个变量从控制器传递到视图,视图中可以访问其中的3个变量,其余变量给出错误“未定义的变量:”。使用compact()或with()将变量传递给视图是否有限制?

 ```
 CONTROLLER:

  class HomePageController extends Controller
{
  public function ShowAdminHomePage()
   {
  $homesection1 = HomeSection1::all();
  $homesection2 = HomeSection2::all();
  $homesection3 = HomeSection3::all();
  $h_s3title = HomeSection3Title::all();
  $count_s1 = HomeSection1::count();
  $count_s2 = HomeSection2::count();
  $count_s3 = HomeSection3::count();
  return view::('backend.page.home.index')->with($homesection1,$homesection2,$homesection3,$count_s1,$count_s2,$count_s2,$count_s3);
  return view('backend.page.home.index', compact('homesection1','homesection2','count_s1','count_s2','homesection3','h_s3title'));
}
 ```


 ```
 VIEW:

   @foreach ($homesection3 as $s3)
          <div class="col-sm-6 col-lg-3 mt-30">
              <div class="feature-box bg-white shadow-hover border-radius-3 f-style-5 h-100 icon-grad">
                  <div class="feature-box-icon"><i class="ti-panel"></i></div>
                  <h3 class="feature-box-title">{{$s3->name}}</h3>
                  <p class="feature-box-desc">{{ $s3->description }}</p>
              </div>
          </div>
        @endforeach
 ```

我能够获取$ homesectio1,$ homesectio2,$ count_s1和$ count_s2的数据,但是$ homesection3和$ h_s3title给出了错误:未定义变量

3 个答案:

答案 0 :(得分:1)

不,php new Promise没有限制。

我建议您保留最后一个return语句,确保在添加变量以使其紧凑或尝试在视图中使用它时没有任何错字。还要检查在零件使用$ homesection3之前的视图中的代码是否正确设置。

答案 1 :(得分:1)

函数结束时您将返回两次。

Could not find or load main class Files\DataStax-DDC\apache-cassandra\\conf\hotspot_compiler

将仅执行第一个返回。这样,您传递的变量return view::('backend.page.home.index')->with($homesection1,$homesection2,$homesection3,$count_s1,$count_s2,$count_s2,$count_s3); return view('backend.page.home.index', compact('homesection1','homesection2','count_s1','count_s2','homesection3','h_s3title'));} 就不会传递给视图。

因此您应该修正您的声明以完成这项工作。

  

每个功能只能返回一次。

尝试一下

$h_s3title

更新

如@kkyeboah所述,紧凑型没有限制。

  

不,PHP紧凑版没有限制。

让我知道这是否适合您!

答案 2 :(得分:0)

send with compact 您应设置以下键和值:

    return view('backend.page.home.index', compact(['homesection1'=>$homesection1,
                                                    'homesection2'=>$homesection2,
                                                    'count_s1'=>$count_s1,
                                                    'count_s2'=>$count_s2,
                                                    'homesection3'=>$homesection3,
                                                    'h_s3title'=>$h_s3title]);