过去几周我一直在学习 PHP,但遇到了一个似乎无法解决的问题。它与我的简单 MVC 程序项目结构中正确渲染模板有关。我没有使用任何框架,也没有使用公共文件夹,因为我目前正在使用 XAMPP 进行本地开发。
simple-crud-auth-app-mvc-procedural/
│
├── index.php
│
├── config/
│ └── (configuration files)
│
├── controllers/
│ └── (controller files)
│
├── models/
│ └── (model files)
│
├── pages/
│ ├── templates/
│ │ └── (template files)
│ └── (page files)
│
├── styles/
│ └── (CSS or style files)
│
└── views/
└── (view files)
在使用链接的文件目录(例如样式或 PHP 文件)时,我在包含模板时遇到问题。具体来说,当我在页面中包含模板时,文件路径(如样式表)基于导入页面的目录,而不是模板的目录。例如,将嵌套标头模板(位于页面下的 templates 文件夹内)导入到 index.php 时,样式表的 ../../styles/styles.css 链接无法按预期工作。相反,它需要是 styles/styles.css 才能正常运行。出现此问题的原因是索引的目录正在用于解析路径。当我向其他页面添加模板时,链接结构完全中断。
我该如何解决这个问题?如何创建一个简单的模板引擎以在整个页面和索引文件中重用标题和其他组件?正如我提到的,我试图保持简单 - 没有路由,并且我不确定路由是否可以解决这个问题或者我是否走在正确的轨道上。
只需将根目录中的所有页面添加到index.php 旁边即可。这样,所有模板的链接将保持不变。
为了在简单的 MVC 过程 PHP 结构中有效管理模板渲染,您可以创建一个基本模板引擎,它可以正确处理文件路径,无论包含模板的目录如何。
第1步:创建基本模板引擎 您可以创建一个简单的函数来包含模板,自动调整样式表和脚本的路径。
第2步:在页面中使用模板功能 当您想要包含模板时,请使用 renderTemplate 函数而不是标准的 include 或 require。此功能将帮助您一致地管理路径。
第 3 步:更新您的模板文件 您将需要调整链接到模板文件中的样式和脚本的方式。不要使用相对路径,而是使用基于您在 renderTemplate 函数中定义的基本 URL 的绝对路径。
第 4 步:调整目录结构(可选) 如果您发现管理路径仍然很麻烦,请考虑组织您的项目结构以使其更加直观。例如,您可以将样式文件夹移动到更易于访问的位置或调整文件夹层次结构。