gpt4 book ai didi

PHP - 在 MVC View 层(Laravel Blade)中使用数据库

转载 作者:行者123 更新时间:2023-11-29 04:01:06 24 4
gpt4 key购买 nike

在 MVC 框架的 View 层中与数据库交互通常是个好主意吗?

  • 我正在使用 Laravel 4。
  • 我想在所有网站页面的顶部显示数据库中的一些数据。
  • 我有一个 main.blade.php 和:@include("inc.header")

如果需要,我如何以正确的方式从 inc/header.php 连接到数据库?

我不想建立多个连接,一个在 header.php 中,一个在我的页面 Controller 中。

比起 Laravel 的数据库方法和 ORM,我对 PDO 更熟悉。

感谢任何建议!

编辑

friend 们就 MVC 和 Laravel 工作流程给出了很好的建议和答案,但我主要关心的问题仍然在这里。

好的,我已经使用 Controller 和模型来获取所需的数据,然后正如我所说,它应该出现在每个页面的 View 层中,所以我应该重复相同的任务以在我所有 Controller 的操作中获取相同的数据? (我想这就是为什么我们在这里有过滤器!再一次,在 Laravel 过滤器中使用 db 可以吗?使用模型?)

提前致谢:)

最佳答案

除了在 View 层中循环遍历数据外,别无他法。基本上,laravel 中的正常 MVC 模式可能是这样的:

一切都从路由层开始(顺便说一下,这在 laravel 中非常棒)

使用闭包

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

//Here data is an array, normally you would fetch data
//from your database here and pass it to the View.

$data = array('this', 'is', 'my', 'data-array');
return View::make('my.view')->with(compact('data');

});

使用 Controller (和 Controller 方法)

//the same route is bound to a controller method
Route::get('/home','HomeController@myFunction');

上面的 Controller 看起来像这样:

<?php

class HomeController extends BaseController {

//The function you call from your route
public function myFunction()
{

$data = array('this', 'is', 'my', 'data-array');
return View::make('my.view')->with(compact('data');

}

}

上面的示例只是展示了 MVC 中的 VC,但通常您以相同的方式从您的模型传递数据。

这是一个快速的例子:

Controller 中的模型使用

  public function myFunction($user)
{

$userdata = User::find($user)->orderBy('firstname', 'desc');
$infodata = Event::find(1)->course;
return View::make('my.view')->with(compact('data', 'infodata');

}

所以我的想法是,laravel 可以让你以多种方式做事。如果你有一个小应用程序,并且确定你可以在没有 Controller 的情况下进行管理,你可以跳过 Controller 并将所有内容保留在你的路由层中。

然而,对于大多数应用程序而言,需要 Controller 来控制应用程序中的数据流。

如果您是 MVC 的新手,您应该查看有关该主题的一些教程。

编辑:

啊哈!所以您想在所有 View 中共享一些数据!那很简单。因为您所有的 Controller 都扩展了 BaseController,所以您可以简单地在其中传递数据。像这样:

    class BaseController extends Controller {

public function __construct()
{
$data = array('alot', 'of', 'data');
return View::share('data', $data);
}
}

现在数据变量在所有 View 中都可用。

附言。过滤器旨在过滤内容,例如检查某些内容是否“正常”。这可能包括检查授权用户或表单提交等。

关于PHP - 在 MVC View 层(Laravel Blade)中使用数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19435688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com