我应该注意到我正在使用 Zend Framework。虽然这不应该影响具体的答案,但这确实意味着我可以在几个地方实现我的以下方法( Action 助手、 Controller 等)。
问题是我有 buildOptions() 和 parseOptions() 方法,它们根据“标签”获取 $_GET/$_POST 变量并构建规则,然后在选择查询中使用这些规则。一个例子是 ?modelSort=id&modelOrder=asc
上面的'model'显然与特定的模型相关,它用作'标签'这样我就可以例如也有model2Sort和model2Order所以参数之间没有冲突。
但是,我现在遇到的麻烦是这些方法应该去哪里呢?他们通常处理请求参数。我一直在阅读很多关于胖模型,瘦 Controller 的文章。这应该在一个抽象模型中。我的想法是,如果是的话,我会做类似的事情:
(注意,我知道我不会像这样直接调用。方法会被子类使用)
$abstractModel->buildOptions($params);
'params' 可以是任何东西,比如请求参数 $_GET 或 $_POST:
$abstractModel->buildOptions($_GET);
现在据我所见,该模型本身并没有处理请求变量,而是处理传递给方法的参数。
建议?这个方法属于哪里?模型、 Controller ?
特别是在 Zend 上,它应该是一个抽象模型中的 Action 助手、插件吗?
感谢任何建议。
最佳答案
好吧,有两种不同的方式来查看 MVC。您可以执行 Controller-Push( Controller 将数据推送到 View 中)或 View-Pull( View 从模型中提取所需的数据)。这两种方法都有其优点和缺点。但共同的主题是该模型对用户输入是愚蠢的。您应该询问用户请求的内容。这使得在不同 View 中重用模型方法变得更加容易(如果需要)。
我个人喜欢 View-Pull 方法,因为它允许您轻松地重复使用您的 View (因为您无需担心需要将哪些数据推送到其中)。因此,您的 Controller 应该处理非显示用户交互(更新表等)。但是 View 应该负责与显示相关的用户交互。因此,如果您购买该方法,则排序和分页应该由 View 读取,并且 View 的工作是将其告知模型。我喜欢让我的模型相当轻,这样它们就可以尽可能地重复使用。
但重要的不是你把它放在哪里。这是关于一致性。只要您对应用程序中的分隔线保持一致,就不会有问题。问题在于一半时间你在一个地方做,另一半时间你在另一个地方做。所以选择一种方法,并坚持下去。
与大多数此类性质的事物一样,很大程度上取决于个人喜好和个人经验。没有单一的最佳方法(如果有,我们都会这样做)。了解各自的优缺点,并为自己做出选择(这样您就可以了解支持和反对您正在做的事情的原因)。
祝你好运......
关于php - 需要一些关于 MVC 分离的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4508899/
当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/
我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Rubysyntaxquestion:Rational(a,b)andRational.new!(a,b)我正在阅读ruby镐书,我对创建有理数的语法感到困惑。Rational(3,4)*Rational(1,2)产生=>3/8为什么Rational不需要new方法(我还注意到例如我可以在没有new方法的情况下创建字符串)?
Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile
我想找到在某些文本中找到一些(让它是两个)句子的好方法。什么会更好-使用正则表达式或拆分方法?你的想法?应JeremyStein的要求-有一些例子示例:输入:ThefirstthingtodoistocreatetheCommentmodel.We’llcreatethisinthenormalway,butwithonesmalldifference.IfwewerejustcreatingcommentsforanArticlewe’dhaveanintegerfieldcalledarticle_idinthemodeltostoretheforeignkey,butinthis
我需要用任何语言编写一个算法,根据3个因素对数组进行排序。我以度假村为例(如Hipmunk)。假设我想去度假。我想要最便宜的地方、最好的评论和最多的景点。但是,显然我找不到在所有3个中都排名第一的方法。Example(assumingthereare20importantattractions):ResortA:$150/night...98/100infavorablereviews...18of20attractionsResortB:$99/night...85/100infavorablereviews...12of20attractionsResortC:$120/night
修改(澄清问题)我已经花了几天时间试图弄清楚如何从Facebook游戏中抓取特定信息;但是,我遇到了一堵又一堵砖墙。据我所知,主要问题如下。我可以使用Chrome的检查元素工具手动查找我需要的html-它似乎位于iframe中。但是,当我尝试抓取该iframe时,它是空的(属性除外):如果我使用浏览器的“查看页面源代码”工具,这与我看到的输出相同。我不明白为什么我看不到iframe中的数据。答案不是它是由AJAX之后添加的。(我知道这既是因为“查看页面源代码”可以读取Ajax添加的数据,也是因为我有b/c我一直等到我可以看到数据页面之后才抓取它,但它仍然不存在)。发生这种情况是因为
这个问题在这里已经有了答案:HashsyntaxinRuby[duplicate](1个回答)关闭5年前。我有一个Recipe,其中包含以下未通过lint测试的代码:service'apache'dosupports:status=>true,:restart=>true,:reload=>trueend失败并出现错误:UsethenewRuby1.9hashsyntax.supports:status=>true,:restart=>true,:reload=>true不确定新语法是什么样的...有人可以帮忙吗?