小编chi*_*ior的帖子

胖模型,瘦控制器和MVC设计模式

我刚看了一篇博客文章,用银行类比来解释MVC.我有几个月使用MVC框架(CakePHP)进行Web应用程序开发的经验,所以我得到了基础知识,但我开始看到一个主题让我觉得我采用了一种有缺陷的方法来处理逻辑:

  • 胖子模特,瘦小的控制器
  • 尽可能在模型中保留尽可能多的业务逻辑

在我的应用程序中,模型是厌食症,控制器是肥胖的.我在控制器中有所有业务逻辑,除了模型中的关联和验证规则之外什么也没有.

通过我的控制器扫描,我现在可以识别出许多应该放在模型中的逻辑:

  • 该应用程序具有包含项目的列表,并且可以对项目进行排名.将列表按排名顺序排列的排序逻辑位于控制器中.
  • 同样,项目(项目模型)也有图像(图像模型).每个项目可能有一个默认图像(由items表中的image_id指定).当项目与其图像一起显示时,应首先显示默认图像.我有一个在控制器中执行此操作的逻辑.
  • 显示列表时,相关列表将显示在侧栏中.确定哪些列表相关的逻辑在控制器中.

现在问我的问题:

  1. 通过上面给出的示例,我是否正确地认为那些是属于模型的控制器中的逻辑实例?
  2. 应该进入模型的网络应用程序常见的其他逻辑领域是什么?
  3. 我确定发现这个问题并且改变我的设计模式是成功的一半,但即使我决定采用上面提到的那些例子并尝试将该逻辑移到模型中,我也不知道从哪里开始.任何人都可以通过在这里发布一些代码或链接到一些好的学习资源来指出我正确的方向吗?CakePHP特定的帮助会很棒,但我确信任何MVC都足够了.

model-view-controller controller cakephp model

75
推荐指数
2
解决办法
1万
查看次数

JavaScript相当于PHP的preg_replace

我使用一个简单的正则表达式替换断行标记与换行符:

br_regex = /<br>/;
input_content = input_content.replace(br_regex, "\n");
Run Code Online (Sandbox Code Playgroud)

这只替换了break标记的第一个实例,但我需要替换所有.preg_match_all()会在PHP中做到这一点,但我想知道JavaScript的等价物.

javascript php regex

71
推荐指数
2
解决办法
9万
查看次数

理解PHP&(&符号,按位和)运算符

我经常($var & 1)在我的代码中使用,如果$var是奇数则返回true,如果是偶数则返回false.

但"&"究竟做了什么?

php bit-manipulation operators bitwise-operators

60
推荐指数
5
解决办法
3万
查看次数

Wordpress过滤器修改最终的html输出

Wordpress具有很好的过滤器支持,可以获取各种特定内容并在输出之前对其进行修改.就像"the_content"过滤器一样,它允许您在帖子输出到屏幕之前访问帖子的标记.

我正在尝试找到一个全能过滤器,它在输出之前完全修改最终标记给我一个最后的破解.谁知道一个?

我已多次浏览过滤器列表,但没有任何内容突然出现在我身上:http: //adambrown.info/p/wp_hooks/hook/filters

(我已经针对这个问题点了一些特定于Wordpress的社区,但没有收到一个回复​​,我以为我会转向那个值得尊敬的SO.)

wordpress

54
推荐指数
7
解决办法
4万
查看次数

如何测试(ActiveRecord)对象的相等性

Ruby 1.9.2on中Rails 3.0.3,我试图测试两个Friend(类继承自ActiveRecord::Base)对象之间的对象相等性.

对象相等,但测试失败:

Failure/Error: Friend.new(name: 'Bob').should eql(Friend.new(name: 'Bob'))

expected #<Friend id: nil, event_id: nil, name: 'Bob', created_at: nil, updated_at: nil>
     got #<Friend id: nil, event_id: nil, name: 'Bob', created_at: nil, updated_at: nil>

(compared using eql?)
Run Code Online (Sandbox Code Playgroud)

只是为了笑容,我还测试了对象身份,它失败了,正如我所料:

Failure/Error: Friend.new(name: 'Bob').should equal(Friend.new(name: 'Bob'))

expected #<Friend:2190028040> => #<Friend id: nil, event_id: nil, name: 'Bob', created_at: nil, updated_at: nil>
     got #<Friend:2190195380> => #<Friend id: nil, event_id: nil, name: 'Bob', created_at: nil, updated_at: nil>

Compared using …
Run Code Online (Sandbox Code Playgroud)

ruby activerecord identity equality ruby-on-rails

51
推荐指数
3
解决办法
3万
查看次数

无法使用CSS设置textarea宽度

我试图使用这个CSS来设置表单元素的宽度:

input[type="text"], textarea { width:250px; }
Run Code Online (Sandbox Code Playgroud)

如果您查看此Firefox屏幕截图,您会看到字段的宽度不同.我在Safari中得到了类似的效果.

alt text http://screamingv.com/ss.png

有没有解决方法?

更新:感谢您的信息到目前为止.我现在确保两个元素上的填充/边距/边框设置相同.我还有问题.我发布的原始CSS已经简化了......我还将textarea的高度设置为200px.当我删除高度样式时,宽度匹配.奇怪的.这是没有意义的.

浏览器错误?

css

24
推荐指数
2
解决办法
7万
查看次数

在CakePHP中创建全局变量的最佳方法是什么?

我想在CakePHP中创建一个全局变量.如果我在app_controller.php中定义了一些内容

var $varName
Run Code Online (Sandbox Code Playgroud)

我可以访问

$this->varName
Run Code Online (Sandbox Code Playgroud)

来自我的任何控制器,但我无法从模型中获得它.

如何创建可从模型访问的全局变量?

$ varName的值直到运行时才知道,所以我不认为bootstrap.php是一个选项.

cakephp

22
推荐指数
3
解决办法
4万
查看次数

如何在CakePHP Model :: save()不尝试INSERT时进行调试

我正在节省时间,从名为ItemView的模型中保存最简单的记录:

if($this->save($this->data)) {
  echo 'worked';
} else {
  echo 'failed';
}
Run Code Online (Sandbox Code Playgroud)

其中$ this->数据是:

Array
(
    [ItemView] => Array
        (
            [list_id] => 1
            [user_id] => 1
        )
)
Run Code Online (Sandbox Code Playgroud)

我的表是:

CREATE TABLE IF NOT EXISTS `item_views` (
  `id` int(11) NOT NULL auto_increment,
  `list_id` int(11) NOT NULL,
  `user_id` int(11) default NULL,
  `user_ip` int(10) unsigned default NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED AUTO_INCREMENT=1 ;
Run Code Online (Sandbox Code Playgroud)

在调试模式下查看查询转储,Cake甚至没有尝试INSERT,所以我不知道如何调试.

任何帮助,将不胜感激.

cakephp

20
推荐指数
4
解决办法
3万
查看次数

javascript正则表达式从锚标记中提取锚文本和URL

我在一个名为'input_content'的javascript变量中有一段文本,该文本包含多个锚标记/链接.我想匹配所有锚标签并提取锚文本和URL,并将其放入类似(或类似)的数组中:

Array
(
    [0] => Array
        (
            [0] => <a href="http://yahoo.com">Yahoo</a>
            [1] => http://yahoo.com
            [2] => Yahoo
        )
    [1] => Array
        (
            [0] => <a href="http://google.com">Google</a>
            [1] => http://google.com
            [2] => Google
        )
)

我对它采取了一个裂缝(http://pastie.org/339755),但我超越了这一点.谢谢您的帮助!

javascript regex anchor

14
推荐指数
3
解决办法
5万
查看次数

如何防止管道字符在Rails 3/Ruby 1.9.2中导致错误的URI错误?

在我的应用程序中实现OAuth2时,我需要处理以下URI:

HTTP://本地主机:3000 /会话/创建/码= LOREM |存有

不确定它是否是Rails 3或Ruby 1.9.2问题(可能是URI.parse),但无论如何,WEBrick会踢Error bad URI.

有人知道解决方法吗?谢谢.

ruby uri ruby-on-rails

12
推荐指数
2
解决办法
5416
查看次数