【问题标题】:Validation within workflow in Joomla component with MVC pattern使用 MVC 模式在 Joomla 组件中的工作流内进行验证
【发布时间】:2011-07-04 19:34:14
【问题描述】:

我正在使用 MVC 模式为 Joomla CMS 编写自定义组件。我正在实现一个简单的工作流程,我希望用户在视图中输入一些数据,验证这些数据(在服务器端,这与客户端/JavaScript 验证无关)并将用户重定向到另一个视图,如果验证成功了。如果数据无效,则应再次显示第一个视图,并标记无效字段。

现在我不确定在哪里放置验证代码:我的第一个想法是将其放置在控制器中,因为它必须决定是否重定向到第二个视图。但我发现了一些建议告诉我不要将验证代码放在控制器中。

将其放入第一个视图的模型中也是一种选择。但是由于在 Joomla 中模型和视图之间是一对一的关系,我不确定只创建一个模型类是否可以(因为在成功验证的情况下,第一个视图不会再次显示)。

有什么标准方法可以做到这一点吗?或者这种行为是在某些标准组件中实现的,所以我可以寻找源代码?任何想法(一些伪代码会很好而且足够......)?

感谢您的帮助!

【问题讨论】:

  • 我没有使用过 Joomla!在大约 2 年内,但由于您将发送到不同的工作流程,我将使用控制器,因此在我使用过的某些 MVC 模型中,该模型可能会出现验证问题。如果用户停留在同一个工作流程中,那么我将使用视图进行验证。

标签: php model-view-controller validation joomla


【解决方案1】:

在我的项目中,我将它们放在 Form 模型中(使用 HTML_QuickForm2)。

半码:

$form = new HTML_QuickForm2();
$form->addElement('text')->addRule('email');
if ($form->validate()) {
    echo "all fine, storing in database";
} else {
    //error, let's try it again
    echo $form;
}

这样,您的表单对象中就有了所有规则和验证。将表单初始化代码移动到扩展 HTML_QuickForm2 的自己的类中,然后就可以设置了。

【讨论】:

  • 感谢提示。我不确定 HTML_QuickForm2 是否与 Joomla 一起工作得很好,但我会尝试实现类似的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 2012-03-20
相关资源
最近更新 更多