【问题标题】:File loop and logic in controller of view header?视图标题控制器中的文件循环和逻辑?
【发布时间】:2012-12-04 11:28:49
【问题描述】:

我的所有视图都包含在 header.php 文件中:

$dh = opendir(Vs.get_class($this).'/js') ;
while($script = readdir($dh)) {
    if(!is_dir($script))
    {
        echo '<script type="text/javascript" src="js/'.$script.'"></script>' ;
    }
}

$dh = opendir(Vs.get_class($this).'/css') ;
while($css = readdir($dh)) {
    if(!is_dir($css))
    {
        echo '<link type="text/css" href="css/'.$css.'" rel="stylesheet"/>' ;
    }
}

其目的是自动加载特定视图的所有 css 和 JS 文件(与控制器同名,因此 get_class)。

这一切都应该是关联控制器的一部分吗?还是我做得很好?

【问题讨论】:

  • AUW 这段代码伤了我的眼睛
  • 哇 :) 很长一段时间以来我见过的一些最糟糕的 PHP 代码 - 可能永远!只要事情存在,它看起来就OK-ish...
  • 致在我上面评论的人.. SO的目的是学习,而不是嘲笑别人!

标签: php oop model-view-controller autoload


【解决方案1】:

Dude 只使用 Glob php 函数。然后包括那些..它会工作得很好。您还需要传递绝对路径

foreach (glob("*.css") as $filename) 
{ 
   echo '<link type="text/css" href="css/'.$filename.'" rel="stylesheet"/>' ; 
}

【讨论】:

  • 要获得好的答案,请放置包含“Glob”的示例代码。它将帮助回答 OP 的问题,帮助将来的其他人,并且您更有可能获得投票。
  • @kuldeep 谢谢,现在调查一下。你能提供一个我匹配css和js文件的例子吗?
  • foreach (glob("*.css") as $filename) { echo '' ; }
  • @kuldeep 将其放入您的实际答案中(编辑它)并为code 使用反引号:)
  • @Jimbo 我把它添加到了答案中:)
【解决方案2】:

仅在视图中使用的脚本和东西属于视图。控制器与它无关。

视图不必是愚蠢的。事实上,他们不应该如此。他们需要关心与准备和返回响应有关的所有事情。这甚至包括设置 HTTP 标头和可能的缓存逻辑。包括必要的 CSS 和 JS 脚本也是其工作的一部分。

【讨论】:

    猜你喜欢
    • 2013-04-23
    • 2011-08-24
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2010-11-01
    相关资源
    最近更新 更多