laravel 5.4 视图中有未定义的变量

laravel 5.4 undefined variable in view

我是 laravel 的新手,我尝试从数据库中提取数据,但一直出现错误页面,提示视图中存在未定义的变量。

我假设我在控制器中做错了(或没有做)。所以我有一个 create.blade.php 将数据从表单发布到数据库并且一切正常,但是我希望它在发布到数据库后重定向到 show.blade.php 显示上传的数据,这里是我遇到错误消息的地方。

这是我在控制器中的存储功能 -

public function store(Request $request)
    {
     $data4page = new Data4page;

     $data4page->h1Ttle = $request->h1Ttle;
     $data4page->h4Ttle = $request->h4Ttle;
     $data4page->description = $request->description;
     $data4page->save();

     /*redirecting to the content's show page*/
     return redirect()->route('content.show', $data4page->id);
}

这是同一控制器内的显示功能 -

public function show($id)
    {
        //
        $data4page = Data4page::find($id);
        return view('digital.show')->with(compact('data4page'));
    }

我收到的错误消息是 -

Undefined variable: data4page (View: /var/www/html/theproject/resources/views/content/show.blade.php)

在 show.blade.php 中,这是我所拥有的示例 -

<h1>{{ $data4page->h4Ttle }}</h1>
<p>{{ $data4page->description }}</p>
<h4>{{ $data4page->h4Ttle }}</h4>

说了这么多,我也尝试了各种方法在控制器的显示函数中返回视图,但所有这些都会导致与上面相同的错误消息。这些变体包括 -

return view('content.show')->with('data4page', $data4page);
return view('content.show',['data4page'=>$data4page]);

更新:我之前有打字错误,但现在我得到的错误是 -

undefined variable: {"id":9,"h1Ttle":"h1 sample text","h4Ttle":"h4 sample text","description":"body text goes here"} (View: /var/www/html/theproject/resources/views/content/show.blade.‌​‌​php)

这是show.blade.php-

@extends('main')
@section('title')
@section('content')
      <div class="app-template">
         <main class="wrapperMain">
            <div class="">
               <aside class="navSidebar">
                  <nav class="navProperty">
                     <h1 class="navProperty-title">{{ $data4page->h1Ttle }}</h1>
                  </nav>
                  <footer class="footerProperty">
                     <div class="upcomingSchedule">
                        <h4 class="upcomingSchedule-heading">{{ $data4page->h4Ttle }}</h4>
                     </div>
                  </footer>
               </aside>
            </div>
            <div class="content content--withSidebar">
               <div class="lead--Home">
                  <p>{{ $data4page->description }}</p>
               </div>
            </div>
         </main>
@endsection

您的名字不匹配。

return view('content.show')->with(['name' => $data4page]);

这里你应该使用:

<h1>{{ $name->h4Ttle }}</h1>

如你所说name

在您的其他选项中,您定义了 Data4page,在您看来,您使用了 data4page(小写 d)。

更改了这个

return view('content.show')->with(['name' => $data4page]);

收件人:-

return view('content.show')->with(compact('data4page'));

希望对您有所帮助!

当下面给出的答案绝对正确时,您为什么要用错误的大小写输入变量名? PHP 变量区分大小写。您在显示的代码中将 $Data4page 传递给您的视图,然后尝试使用访问权限 $data4page。以下任何一项都可以。

return view('content.show', ['data4page' => $data4page]);
return view('content.show', compact('data4page'));
return view('content.show')->with('data4page', $data4page);
return view('content.show')->with(['data4page' => $data4page]);
return view('content.show')->with(compact('data4page'));

您需要遍历集合来获取值

@section('content')
     <div class="app-template">
        <main class="wrapperMain">
           @foreach ($data4page as $d4p)
           <div class="">
              <aside class="navSidebar">
                 <nav class="navProperty">
                    <h1 class="navProperty-title">{{ $d4p->h1Ttle }}</h1>
                 </nav>
                 <footer class="footerProperty">
                    <div class="upcomingSchedule">
                       <h4 class="upcomingSchedule-heading">{{ $d4p->h4Ttle }}</h4>
                    </div>
                 </footer>
              </aside>
           </div>
           <div class="content content--withSidebar">
              <div class="lead--Home">
                 <p>{{ $d4p->description }}</p>
              </div>
           </div>
           @endforeach
        </main>
@endsection