【问题标题】:laravel database pass data bladelaravel 数据库传递数据刀片
【发布时间】:2017-06-09 05:06:50
【问题描述】:

我是 Laravel 的新手,想弄清楚为什么我的一个页面没有从数据库中提取数据。使用基于 Laracasts 项目的设置在本地运行。我在 Laravel 5.4 上运行 PHP 7 和 OS X Sierra 上的 MySQL。

我收到此错误:未定义变量:主题标签(在我的 hashtags.blade.php 文件中)

我有这个代码 hashtags.blade.php,旨在从数据库中提取条目:

<h2>Your Hashtags</h2>

    <table>
        <tr>
            <th>Hashtag</th>
            <th>List Name</th>
            <th>List Members Added</th>
        </tr>

    @foreach($hashtags as $hashtag)

        <tr>
            <td>{{ $hashtag -> tagname }}</td>
            <td>{{ $hashtag -> listname }}</td>
            <td>Count</td>
        </tr>

    @endforeach

    </table>

在我的 web.php 路由文件中:

Route::get('/hashtags', function () {

    $hashtags = DB::table('hashtags')->get();
    return view('hashtags');
});

我通过 .env 文件连接了数据库,Laravel 中的整体连接似乎正常工作,只是不在此页面上。我的印象是 web.php 中的代码定义了变量 $hashtags 并将其传递给 hashtags.blade.php。显然我在这里遗漏了一些东西。

我搜索并发现了一些关于将数据传递到刀片文件的其他问题,但没有什么与这个问题完全一样。谢谢!

【问题讨论】:

  • 说真的,每个 laravel 教程都有写:return view('hashtags', ['hashtags' =&gt; $hashtags]);

标签: php mysql laravel


【解决方案1】:

您需要将变量传递给模板。试试:

return view('hashtags', [
    'hashtags' => $hashtags
]);

或

return view('hashtags', compact('hashtags'));

【讨论】:

  • 我选择了第二个选项 - 添加 compact ('hashtags')); - 它就像一个魅力。非常感谢!我花了令人尴尬的时间试图弄清楚这一点!
【解决方案2】:

您可以通过 3 种方式在刀片中传递数据

1.  return view('hashtags', ['hashtags' => $hashtags]);
2   return view('hashtags')->with('hashtags', $hashtags);
3.  return view('hashtags', compact('hashtags'));

【讨论】:

    【解决方案3】:

    您需要在 web.php 路由文件中传递变量

    试试这个

    Route::get('/hashtags', function () {
        $hashtags = DB::table('hashtags')->get();
        return view('hashtags',compact('hashtags'));
    });
    

    【讨论】:

      【解决方案4】:

      似乎您没有将$hashtags 传递给您的视图。我建议在您的 Routes 文件中使用compact。 当您移动到控制器时,compact 也可以在那里正常工作。

      <h2>Your Hashtags</h2>
      <table>
          <tr>
              <th>Hashtag</th>
              <th>List Name</th>
              <th>List Members Added</th>
          </tr>
      @foreach($hashtags as $hashtag)
          <tr>
              <td>{{ $hashtag-> tagname }}</td>
              <td>{{ $hashtag-> listname }}</td>
              <td>Count</td>
          </tr>
      @endforeach
      </table>
      

      还有你的Routes 文件:

      Route::get('/hashtags', function () {
          $hashtags = DB::table('hashtags')->get();
          return view('hashtags', compact('hashtags'));
      });
      

      如果你有一个Hashtag 模型,你可以这样做: (注意你如何使用Hashtag 模型,而不是DB)

      use App\Hashtag; // Add this at the routes files top
      
      Route::get('/hashtags', function () {
          $hashtags = Hashtag::all();
          return view('hashtags', compact('hashtags'));
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-19
        • 2019-04-13
        • 2021-07-05
        • 2020-04-03
        • 2019-08-01
        • 2018-10-13
        • 2017-02-24
        • 2017-07-27
        相关资源
        最近更新 更多