用户
 找回密码
 入住 CI 中国社区
搜索
楼主: snllll
收起左侧

[模型] CI是如此的啰嗦!令人费解,还是我没有学会一个技巧?

  [复制链接]
发表于 2011-1-9 00:50:09 | 显示全部楼层
回复 60# penglu3000


    想法确实是不错,不过这需要 ORM 的配合。如果没有更好的封装,可能会制造更多的混乱。
 楼主| 发表于 2011-1-9 01:28:21 | 显示全部楼层
楼主想法绝对正确。参考ecmall.
$data=$_POST;
然后针对数据和业务进行filter.不就行了?
而且,正好可以对 ...
loadinger 发表于 2010-11-11 17:07



   
 楼主| 发表于 2011-1-9 01:32:43 | 显示全部楼层
其实楼主的想法很对。这里喷楼主的习惯性的偏袒自己钟爱的技术,听不进别人的想法。
看看yii怎么处理的:

...
penglu3000 发表于 2011-1-8 23:48



   


再次上论坛,突然发现这个帖子还是有人关注的,可能是因为我的标题实在是太吓人了。

其实关于这个问题,是当初我太偏执,我态度上存在很大的问题,给前面争论过的朋友们道个歉。

这个东西,用起来得心应手,各人有各人的习惯和思维方式,不必非要分出个高低。

当然,关于思想上,我认为有冲突是好事,理越辩越明。大家各抒己见,能相互交流各自关于软件思想的认识,好事。
发表于 2011-1-12 20:41:59 | 显示全部楼层
刚入门ci,也遇到lz的问题,可能之前接触过tp吧,tp有lz所要的功能,而且基本上自动帮你过滤数据再对应数据表中的字段插入,的确很方便。离开tp,是因为其中的bug还是不少。至于有人说tp的效率不及ci,这我没亲自测试过,但是看过phpchina的那篇比较,貌似差小小而已,两者同样定位于轻型框架。
发表于 2011-1-19 16:26:00 | 显示全部楼层
ruby我忘了,反正asp.net MVC可以做到这个。但是,这样是很不好的,模式彻底僵化,你想改变都不行!!!!
发表于 2011-2-1 22:23:18 | 显示全部楼层
当程序写多了以后,会发现些代码越严谨越好,而不是要简单化,因为所谓的简单以后会带来大麻烦
发表于 2011-2-3 15:29:30 | 显示全部楼层
楼主,你需要的是model...请你这个是封装在model里面的数据操作。
其次,你只需要 $query = $this->db->insert()...,$query 就是最后插入的id
第三,在业务逻辑里面只需要

$this->user->create()一句话就结束了。。。
发表于 2011-2-25 13:11:13 | 显示全部楼层
1、前台的字段 也就是input的name最好不要和数据库的字段相同
2、不能直接使用$datas=$_POST; 先不说验证不验证的问题,在一个复杂的应用中,往往有很多hidden的name,他们并不需要入库,只是提供程序逻辑参考,这么写代码插入数据库就出错了。
3、其实你的想法是可以实现的,怎么实现呢?看如下:

HTML复制代码
 
<form xxxxxx>
  <input name='db_newstitle'/>
  <input name='db_newbody'/>
  <input type='hidden' name='hidden_isad' value='0'/>
</form>
 
复制代码

这里有一个新闻标题,新闻内容,是否广告三个字段,是否是广告是一个hidden值,通过页面载入或者其他js判断和改变。
你可以看到,你要入库的字段,有一个'db_'前缀,其他的字段没有这个前缀。
后台代码可以如下写:
PHP复制代码
 
$prefix='db_';
$datas=array();
foreach($_POST as $key=>$value)
{
  if(strstr($prefix,$key))
    $datas[]=array(substr($key,strlen($prefix))=>$value);
}
 
复制代码

这样处理,$datas数组里面就有一个title  一个 body。
至于提交数据库前的验证,这里可以使用CI的验证类,具体怎么验证自己看验证类吧。

点评

不错!  发表于 2012-7-16 20:16

评分

参与人数 1威望 +5 收起 理由
Hex + 5 非常赞成!!

查看全部评分

发表于 2011-2-26 16:22:30 | 显示全部楼层
在简单的话,程序员就不值钱了~~~
发表于 2011-2-26 19:28:53 | 显示全部楼层
表单里的数据是要经过校验的。

本版积分规则