有关PHP和Magento验证的MVC常规问题

我一直在使用Magento& PHP CodeIgniter MVC大约4个月.我在了解在哪里为CodeIgniter& amp;设置验证逻辑的地方有一个特殊的问题. Magento,只有在我考虑遵循MVC架构的真正本质时,以非常恰当的语义方式

首先,我将从Magento开始:

假设我在Magento中有一个“分配”模块,该模块与Players&比赛都有.在此“分配”模块的控制器中,我有3种操作方法,需要在其中检查&验证以下内容:

>玩家编号
>比赛编号

在“分配”模块的Block类以及3种操作方法中,也需要进行此验证.
因此,我的查询是应该在该模块的Controller类或Model类中编写以上两点的验证,因为我将需要在Block类&中使用验证.还可以在Controller类中吗?

在这种情况下,实际的MVC架构又意味着什么呢?

如果可能,请提供一个代码段,突出显示您的实现逻辑.

关于CodeIgniter或任何其他PHP MVC框架:-

由于使用会话验证任何内容都是特定于页面的&由于CodeIgniter中没有“块”的概念,因此通常情况下,会话验证和会话变量的设置仅在Controller类中完成.

因此,我在这方面的疑问是这是正确的方法吗?在什么情况下,我应该安排会议的安排者?模型类中的会话验证?

再次,在这种情况下,实际的MVC架构意味着什么?

再次,如果可能的话,请提供一个代码片段,强调实现的逻辑.

对于此&我真的很困惑我有点被困在这里.请在这里帮助我.任何解决方案/帮助将不胜感激.提前谢谢了.

编辑:-

如果可能,请提供一些有关如何创建&的Magento代码.用Model方法中定义的实际异常消息编写适当的验证以及引发异常?

解决方法:

模型层应该能够保持其自身的一致性,因此,无论其他决定如何,您都应在模型层中包括您的验证.为了帮助用户(并提供更多有用的验证消息),您可能还希望在控制器级别进行一些验证.

这种方法的优势在于,假设您维护模型层,则流氓控制器不会设置错误的数据.这涉及到您的第二个问题,Magento的答案是使用一个对象来管理会话部分的数据,并在进入会话的途中验证该数据.

另外,要在块/视图中处理验证,请考虑使用这种验证.它有其自身的缺陷,但通常可以减少您必须编写的验证代码的数量:

// make sure that the below returns the relevant assignment model class
$assignment = $this->getAssignment(); // or get it via a session, or helper, or what have you.
$player = getChosenPlayer();


try {
    $assignment->setPlayer($player); //throws exception when invalid
    ... do more ...
    $assignmnent->save();
} catch(SomeException $e) {
    addValidationError($e->getMessage());
    renderPageAgain();
}
上一篇:java – 面对weblogic中的perm gen space错误


下一篇:Weblogic任意文件上传漏洞(CVE-2018-2894)复现