【问题标题】:PHP templating classes and presentation logic?PHP模板类和表示逻辑?
【发布时间】:2013-01-27 07:55:58
【问题描述】:

我研究过前端控制器模式。我确信我将在即将到来的项目中使用这种模式。我还没有编写代码,但是,如何为我的网站使用表示逻辑?如果我想在用户登录并且用户具有某些权限时显示某些信息怎么办?如果某个表单需要数据库中的数据才能工作怎么办? (对于后者,我想用 AJAX 调用相应的控制器并以这种方式加载数据,但我不知道是否有更有效的方式)这让我有点困惑,我想尽可能避免使用框架像 Smarty 或 CakePHP。提前谢谢你。

编辑:我正在考虑使用模板控制器类,这是一个负责加载某些网页并显示它们的类,从前端控制器调用。我的主要问题是在调用模板页面时从数据库加载数据。如果有一个表单需要数据库中的数据怎么办?我是否必须依靠 AJAX 来加载数据,或者有没有办法告诉模板加载数据同时保持图层分离?

【问题讨论】:

  • 尝试使用框架进行测试。 smarty 是一个模板引擎。 CakePhp 是一个框架
  • 您要构建自己的类似 MVC 的框架吗?作为一个完全做到了我可以说的人,这是很多工作。根据您的需要,前端控制器应包含与不同场景或“工作流程”相关的方法。这些方法取代了单独的“页面”,例如 login.phpaccount.php
  • @Gordon:更像是一个框架,我会说它是一个引擎。但是,我对您的回答很感兴趣,您能否详细说明控制器和页面如何协同工作?我在想我应该创建一个模板控制器类并从那里显示网页,但现在我很感兴趣!
  • 嗯,听起来您打算将工作委托给另一个班级。除了选择要使用的模板之外,模板控制器会做什么?我还认为您可以根据进入视图的数据来摆脱等式的“用户权限”部分,即如果用户具有权限,则显示一些元素。
  • ...其实这是我的问题。模板控制器加载一个网页并显示它,仅此而已。也许我可以使用$_SESSION 变量和在相应位置嵌入条件来控制某些条件,但除此之外我不知道该怎么做,尤其是当我需要数据库中的数据来加载表单时,例如,没有依赖 AJAX。

标签: php design-patterns controller presentation front-controller


【解决方案1】:

我想我得到了答案。我还没有测试过,但我认为我可以这样做。

首先,HTML5 有the capability to add custom data attributes to each tag。考虑到这一点,我可以执行以下操作,假设我们有一个 targetController 类,其中包含一个名为 foo() 的方法和一个前端控制器,该控制器将单词“Controller”附加到每个请求:

<select data-target="target" data-action="foo">
</select>

这样我可以在文档被渲染之前调用某个控制器并调用某个动作!现在,我可以通过a DOM library 加载它们,而不是仅以常规方式包含模板,这会将控制器加载委托给前端控制器作为常规请求或通过可能执行控制器加载的类。这样我就不必依赖 javascript 来做任何事情。一旦开始工作,我一定会测试这个解决方案!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 2011-03-04
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多