您好,针对你提出的疑问,我细看了一下,也开始怀疑我当初为什么这样做。
后面慢慢细究出来当时的想法
if (isset($_POST['FormName'])) {
$model->attributes = $_POST['FormName'];
if ($model->validate()) {
if ($model->save()) {
// handle success
}
}
}
也就是通过$model->attributes
来赋值,然后,进行验证
但这种方式,需要数据库所有的字段都写到rules()函数里面,否则无法通过$model->attributes = $_POST['FormName'];
这种方式来赋值,只能单个属性赋值,进而,fecshop使用了
$model = Yii::$service->helper->ar->save($model, $one);
这种方式进行遍历赋值,另外针对多维数据加入了serialize
处理
,当时也是没有绕出来这个固圈,导致当时对其进行了整体抛弃,现在又回去看了一下源码,
这种规则验证还是可以继续用起来的
// 规则验证
if ($model->validate()) {
}
仅仅进行规则验证,其他的保存方式,还是使用$model = Yii::$service->helper->ar->save($model, $one);
,因为有的表的字段非常的多,不可能都写到rules里面,如果写到rules里面,那么新加一个字段,都需要写到models的rules里面,会费劲很多,另外,可能多种保存方式做多种rules,就和fecshop中的customer,登录,注册都需要单独写一个model rules,会搞的很重。
因此,将$model->validate()
引入进来,models层的rules,只做数据层的验证,保证后端的数据安全,对于form表单的验证,由前面的block完成。不过form表单的很多数据和model层的数据是叠加的。
总结:将$model->validate()
引入进来,做model的rules规则验证,保证最终的数据格式安全。
感谢你的问题提出,后面着重优化一下这块。
1.第一次安装,建议用docker,win10可以安装docker
2.你应该在apache(或者nginx)做去掉index.php
的处理,
参看文档:http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-about-config.html
4.2.1、Nginx或apache要做去掉index.php的配置
,另外图片也是这个文档地址,参看8、图片域名配置文件
部分,
图片要在这个做配置,另外,nginx要的域名和文件路径要对应好
fecshop的设计是一个中型电商系统,配置有点繁琐,第一次安装建议用docker,有安装视频, windows安装,我没有太多经验,因此没有文档
@youzhanghao #5楼 有一些操作,需要root权限,我的操作是用的linux shell root
你还是把这些操作前面都加上sudo
吧, 加上就相当于有了root的权限