”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在纯 PHP 项目中使用 Laravel Blade 模板引擎?

如何在纯 PHP 项目中使用 Laravel Blade 模板引擎?

发布于2024-07-31
浏览:754

How to Use Laravel Blade Templating Engine with a Pure Vanilla PHP Project?

今天,我挑战自己使用纯 PHP 实现 Laravel MVC(模型、视图、控制器)方法。为了解决这个问题,我在项目的视图部分使用了标准的 Laravel Blade 模板引擎,但没有安装 Laravel,因为我的项目是纯粹的 PHP。以下是我实现这种集成的方法;

我首先使用以下 Composer 命令安装一个名为 Blade 的软件包,作者是 JensSegers

composer require jenssegers/blade

这个包允许 Blade 模板引擎作为独立包使用,使其与任何 PHP 项目兼容,而不仅仅是 Laravel。

接下来,我运行以下命令将包的照亮/视图依赖项更新到版本 11.7.0,因为该包无法在 11.7.0 以下的版本中正常工作:

composer require illuminate/view:11.7.0

然后,我创建了一个名为“pdotest”的数据库,其中包含一个名为“post”的表,其中包含“name”和“body”列。我分别用数据填充此表(“这是使用 Blade 模板引擎显示的数据库中的帖子名称”,“这是使用 Blade 模板引擎显示的数据库中的帖子正文”),并通过在我的根目录中创建 Database.php 文件来连接到它项目并输入以下代码:

host;dbname=$this->database",$this->username,$this->password);

        // $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // $conn = $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


        return $conn;

    } catch (PDOException $e) {

        echo "Connection failed: " . $e->getMessage();

    }
}

}


?>

接下来,我为所有数据库操作创建了一个名为“Models”的目录。在这个目录中,我创建了一个名为 Post.php 的文件来处理“post”表上的操作。在此文件中,我定义了一个名为 post 的方法,用于通过 ID 检索帖子,如下所示:

conn = (new Database)->connect(); // Access directly (less secure)
}


public function getPost($id){

    $stmt= "SELECT * FROM $this->table WHERE id = :id";

    $stmt =  $this->conn->prepare($stmt);

    $stmt->bindParam(':id', $id, PDO::PARAM_INT);

    $stmt->execute();

    return $result = $stmt->fetch();

}


}


?>

接下来,我创建了 index.php 来充当路由器,连接我的控制器、视图和模型。在其中,我导入了所有视图和缓存路径,我将创建这些路径来放置我的 Blade 视图和缓存文件。然后这些路径被传递给 Blade 类,该类是我们一开始安装的 Blade 包附带的。然后,我将此 Blade 实例传递给我将创建的 PostController 类,并调用该类的 post 方法以在将来通过其 ID 获取帖子。

post();

?>

然后,我在项目的根目录下创建了一个“controllers”目录。在其中,我从index.php(路由器)接收了 Blade 变量,调用 Post 模型的 getPost 方法以通过其 ID 获取帖子,并将该帖子传递到名为“homepage”的 Blade 视图。

blade = $blade;
    }

  public function post(){

    $post = (new Post)->getPost(1);

    echo $this->blade->render('homepage', ['post' => $post]);


  }

}




?>

然后,我在项目的根目录下创建了一个名为“views”的目录和一个名为 homepage.blade.php 的文件。在这个文件中,我只是显示了从 PostController 传递的帖子的名称,如下所示:

{{$post['name']}}

最后,我在项目的根目录中创建了一个“cache”目录来存储 Blade 缓存文件,这有助于提高项目的性能。

现在,当您在浏览器中访问 http://localhost/laravel-blade-without-laravel/index.php 时,您将看到帖子的名称显示为“这是使用 Blade 模板显示的数据库中的帖子名称”引擎。”

感谢您关注这篇关于在纯 PHP 项目中使用 Laravel Blade 模板引擎的文章。我希望它对您的发展之旅有所帮助。我叫 Waziri Ally Amiri,是一名来自坦桑尼亚莫希的 Web 开发人员。我专注于使用 Laravel,并且喜欢帮助其他人开始使用这个强大的框架。如果您有任何疑问或需要进一步帮助,请随时与我们联系。

版本声明 本文转载于:https://dev.to/waziridev/how-to-use-laravel-blade-templating-engine-with-a-pure-vanilla-php-project-5h1a?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • CSS强类型语言解析
    CSS强类型语言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    编程 发布于2025-05-07
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,尝试访问未定义的属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, AttributeError: SomeClass ...
    编程 发布于2025-05-07
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-05-07
  • Java开发者如何保护数据库凭证免受反编译?
    Java开发者如何保护数据库凭证免受反编译?
    在java 在单独的配置文件保护数据库凭证的最有效方法中存储凭据是将它们存储在单独的配置文件中。该文件可以在运行时加载,从而使登录数据从编译的二进制文件中远离。使用prevereness class import java.util.prefs.preferences; 公共类示例{ 首选项...
    编程 发布于2025-05-07
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-05-07
  • 如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    在Visual Studio 2012 尽管已安装了MySQL Connector v.6.5.4,但无法将MySQL数据库添加到实体框架的“ DataSource对话框”中。为了解决这一问题,至关重要的是要了解MySQL连接器v.6.5.5及以后的6.6.x版本将提供MySQL的官方Visual...
    编程 发布于2025-05-07
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-05-07
  • Python高效去除文本中HTML标签方法
    Python高效去除文本中HTML标签方法
    在Python中剥离HTML标签,以获取原始的文本表示Achieving Text-Only Extraction with Python's MLStripperTo streamline the stripping process, the Python standard librar...
    编程 发布于2025-05-07
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-05-07
  • 如何在其容器内为DIV创建平滑的左右CSS动画?
    如何在其容器内为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-05-07
  • 在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在C中的显式删除 在C中的动态内存分配时,开发人员通常会想知道是否有必要在heap-procal extrable exit exit上进行手动调用“ delete”操作员,但开发人员通常会想知道是否需要手动调用“ delete”操作员。本文深入研究了这个主题。 在C主函数中,使用了动态分配变量(H...
    编程 发布于2025-05-07
  • 将图片浮动到底部右侧并环绕文字的技巧
    将图片浮动到底部右侧并环绕文字的技巧
    在Web设计中围绕在Web设计中,有时可以将图像浮动到页面右下角,从而使文本围绕它缠绕。这可以在有效地展示图像的同时创建一个吸引人的视觉效果。 css位置在右下角,使用css float and clear properties: img { 浮点:对; ...
    编程 发布于2025-05-07
  • 如何从Google API中检索最新的jQuery库?
    如何从Google API中检索最新的jQuery库?
    从Google APIS 问题中提供的jQuery URL是版本1.2.6。对于检索最新版本,以前有一种使用特定版本编号的替代方法,它是使用以下语法:获取最新版本:未压缩)While these legacy URLs still remain in use, it is recommended ...
    编程 发布于2025-05-07
  • 如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求模拟浏览器行为,以及伪造的用户代理提供了一个用户 - 代理标头一个有效方法是提供有效的用户式header,以提供有效的用户 - 设置,该标题可以通过browser和Acterner Systems the equestersystermery和操作系统。通过模仿像Chro...
    编程 发布于2025-05-07
  • 如何使用“ JSON”软件包解析JSON阵列?
    如何使用“ JSON”软件包解析JSON阵列?
    parsing JSON与JSON软件包 QUALDALS:考虑以下go代码:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    编程 发布于2025-05-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3