0

我对 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>

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

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
4

4 回答 4

3

你的名字不匹配。

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

在这里你应该使用:

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

正如你所说name

在您定义的其他选项Data4page中并在您的视图中使用data4page(小写 d)。

于 2017-06-06T11:44:26.687 回答
3

改变了这个

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

到:-

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

希望它有帮助!

于 2017-06-06T11:47:09.150 回答
0

当下面给出的答案绝对没问题时,为什么还要用错误的大小写来输入变量名?PHP 变量区分大小写。您正在$Data4page显示的代码中传递给您的视图,然后尝试使用 access $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'));
于 2017-06-06T12:10:09.557 回答
0

您需要遍历集合以获取值

@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
于 2017-06-06T12:14:21.620 回答