Php HMVC中的用户输入验证

Php HMVC中的用户输入验证,php,validation,kohana,hmvc,Php,Validation,Kohana,Hmvc,在阅读了无数关于这个问题的答案后,我觉得我仍然没有找到一个明确的答案来回答这个问题——我应该在HMVC中在哪里以及如何进行用户输入验证?根据流行的观点,我对在模型中编写验证代码的想法有一定的认同,但这让我留下了以下两个问题没有回答 1模型如何知道哪个UI元素(例如:id为user_name的文本框)是错误的原因,从而使视图将焦点放在该特定UI元素上或在其旁边显示错误消息 2我在中的某个地方读过,所以一旦您将验证例程放入模型中,就可以利用JS直接调用这些模型方法。在这种情况下,这难道不是打破了MV

在阅读了无数关于这个问题的答案后,我觉得我仍然没有找到一个明确的答案来回答这个问题——我应该在HMVC中在哪里以及如何进行用户输入验证?根据流行的观点,我对在模型中编写验证代码的想法有一定的认同,但这让我留下了以下两个问题没有回答

1模型如何知道哪个UI元素(例如:id为user_name的文本框)是错误的原因,从而使视图将焦点放在该特定UI元素上或在其旁边显示错误消息

2我在中的某个地方读过,所以一旦您将验证例程放入模型中,就可以利用JS直接调用这些模型方法。在这种情况下,这难道不是打破了MVC模式的基本规则吗

如果模型不适合容纳验证代码,您会建议在哪里

请分享你的想法

谢谢

1模型如何知道哪个UI元素(例如:id为user_name的文本框)是错误的原因,从而使视图将焦点放在该特定UI元素上或在其旁边显示错误消息

模型不知道也不需要知道哪个UI元素负责。Kohana ORM设计用于将错误数组返回控制器,控制器将其插入视图中。Kohana文档准确地描述了您要做的事情

2我在中的某个地方读过,所以一旦您将验证例程放入模型中,就可以利用JS直接调用这些模型方法。在这种情况下,这难道不是打破了MVC模式的基本规则吗

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

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


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

在MVC中,您可以在域对象中执行此操作。在科哈纳,你可以用模型来做。