我正在阅读很多内容并且得到了非常好的结果。
说我有这样的代码吗?
$name = trim($_POST['name']);
$email = trim($_POST['email']);
if(strlen($name) > 0 & strlen($email) > 0)
{
$u = new User();
$u.name = $name;
$u.email = $email;
$u.validate();
}
此代码应该在哪里生效?实际检查表单以确保它具有实际值的代码?我说模型,但是如果你的表单跨越多个模型会怎么样?
我有点困惑,任何帮助清除它都会受到赞赏。
答案 0 :(得分:3)
理想情况下,完全分离关注点:
Controller
应收集$_POST
数组并将其传递给Model
。
然后model
会进行修剪和验证等处理。
我会说+1模型包含业务逻辑。
答案 1 :(得分:2)
模型层中的检查应该保证数据库的完整性。所有这些检查都应该存在于你的u.validate()方法中。
您可以另外将检查添加到控制器层作为优化或驱动某些视图操作。
我会以这种方式重构。
控制器代码
$u = new User();
$u.name = $_POST['name'];
$u.email = $_POST['email'];
if ($u.validate() && $u.save()) {
// success code
} else {
// fail
}
模型代码
class user {
...
function validate() {
if (empty($this->name) || strlen($this->name) < 1) return false;
if (empty($this->name) || strlen($this-email) < 1) return false;
}
...
答案 2 :(得分:1)
将其放入model
部分,因为模型包含业务逻辑..
<强> Reference 强>
答案 3 :(得分:1)
这是一篇很好的文章,远远解释了PHP中的MVC Oreilly上面的答案是正确的,但是为了让你真正使用MVC对每个部分为什么会去的地方有一定的了解,希望这篇文章能够推动你朝着正确的方向发展。
答案 4 :(得分:0)
如果您在保存之前验证数据(例如电子邮件,姓名),那么我投票给模型。
您的MVC框架应该能够验证每个模型的数据。
最后,MVC是一种架构。没有确定的模式。所以这取决于你。很多时候一致性都会胜出。也就是说,如果你想把它放在控制器而不是模型中,那就在你的代码中做。