繁体   English   中英

HMVC中的用户输入验证

[英]User input validation in HMVC

在阅读了关于该主题的无数答案之后,我觉得我仍然没有找到明确的答案-在(H)MVC中我应该在哪里以及如何进行用户输入验证? 根据流行观点,我对在MODEL中编写验证代码的想法有些不满,但这使我没有回答以下两个问题。

1)MODEL如何知道哪个UI元素(例如,ID为user_name的文本框)引起错误,以便它可以使VIEW将焦点放在该特定UI元素上或在其旁边显示错误消息?

2)我在SO的某处读到,一旦将验证例程放入MODEL中,就可以利用JS来直接调用那些MODEL方法。 在那种情况下,难道就不是打破MVC模式的基本规则吗?

如果MODEL不适用于验证代码,那么您会提出什么建议?

请分享您的想法。

谢谢,

1)MODEL如何知道哪个UI元素(例如,ID为user_name的文本框)引起错误,以便它可以使VIEW将焦点放在该特定UI元素上或在其旁边显示错误消息?

该模型不知道(也不需要知道)哪个UI元素负责。 Kohana ORM 验证功能旨在将错误数组返回给控制器,控制器将其插入视图中。 Kohana文档中有一个您正在尝试执行的示例

2)我在SO的某处读到,一旦将验证例程放入MODEL中,就可以利用JS来直接调用那些MODEL方法。 在那种情况下,难道就不是打破MVC模式的基本规则吗?

Kohana没有任何内置的基于JavaScript的模型验证。 您可以使用许多附加的JavaScript验证框架,大多数常用的验证框架都可以通过在服务器端代码中生成类名称,特殊data-*属性或JavaScript数组的列表来工作。客户端验证代码使用。 生成此验证数据的正确方法是在控制器中,方法是:向模型询问其执行的验证数组,然后在控制器内部使用该数组来构建JavaScript。

该技术与上述技术之间的唯一区别在于,前者仅向模型询问失败的验证的名称,而后者则向模型询问所有验证的名称。

为此,您将需要创建一个新的类Validation extends Kohana_Validation并在其中添加一个方法get_rules来返回此对象的验证规则。 然后,在控制器中,您可以调用my_model->validation()->get_rules()并处理规则数组以制作JavaScript。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM