Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MVC功能-视图中是否正常?_Php_Model View Controller_Templates - Fatal编程技术网

Php MVC功能-视图中是否正常?

Php MVC功能-视图中是否正常?,php,model-view-controller,templates,Php,Model View Controller,Templates,我正在将我的站点从一些旧的意大利面编码升级到一些漂亮、干净的自定义MVC结构(并在这个过程中享受学习的乐趣) 在我显示博客列表的页面上,我有一个功能,可以帮助我为a链接动态构建HREF–通过$\u GET跟踪应用的过滤器…很难解释…但它是: /* APPLY BROWSE CONTROLS / FILTERS | this function reads current $_GET values for controlling the feed filters, | and replaces

我正在将我的站点从一些旧的意大利面编码升级到一些漂亮、干净的自定义MVC结构(并在这个过程中享受学习的乐趣)

在我显示博客列表的页面上,我有一个功能,可以帮助我为a链接动态构建HREF–通过$\u GET跟踪应用的过滤器…很难解释…但它是:

/* APPLY BROWSE CONTROLS / FILTERS 
 | this function reads current $_GET values for controlling the feed filters,
 | and replaces the $value with the desired new $value
*/
function browse_controls($key,$value=null,$ret='url') {

    // find current control settings
    $browse_controls = array();
    if(array_key_exists('browse',$_GET)) { $browse_controls['browse'] = $_GET['browse']; }
    if(array_key_exists('display',$_GET)) { $browse_controls['display'] = $_GET['display']; }
    if(array_key_exists('q',$_GET)) { $browse_controls['q'] = $_GET['q']; }

    // replace desired setting
    if($value) {
        $browse_controls[$key] = $value;
    }else{
        unset($browse_controls[$key]);
    }

    // build url
    $url = ABS_DOMAIN . 'sale/';
    if(!empty($_GET['cat'])) { $url .= $_GET['cat'] . '/';}
    if(!empty($_GET['sub'])) { $url .= $_GET['sub'] . '/';}
    $url .= '?' . http_build_query($browse_controls);
    return $url;
}
我可以简单地称此查询为:

<a href='<?php echo browse_controls('browse',$prev_page); ?>' class="crumb">Previous Page</a>

如何使用MVC结构和表示与逻辑的完全分离来实现这一点。我的模板中是否允许使用函数


救命啊

我不确定您的特定框架,但在RubyonRails和ASP.NETMVC中,这类内容会转到助手类中。它们是UI关注点。现在我们来看看这里的逻辑。只是格式化、转换格式、构建HTML。您可以将它们放在模板的旁边,或者为它们提供单独的目录


我能推荐的是检查与您的框架绑定的示例。通常他们对框架有很好的了解。

我不确定您的特定框架,但在Ruby on Rails和ASP.NET MVC中,这类内容会转到助手类中。它们是UI关注点。现在我们来看看这里的逻辑。只是格式化、转换格式、构建HTML。您可以将它们放在模板的旁边,或者为它们提供单独的目录


我能推荐的是检查与您的框架绑定的示例。通常,他们对框架有很好的了解。

我使用以下测试:我想在“表示空间”中编写的代码是否决定表示什么,或如何表示它?如果答案是什么,那么它更像是业务逻辑,可能属于模板之外。如果是如何呈现它,那么它属于模板(或相关的支持功能)

例如,假设您为某些用户提供10%的折扣。计算折扣前后的具体价格显然是商业逻辑。测试是否有折扣,然后以红色显示是表示逻辑


当然,规则总是有例外的,但是应该承认这些例外,并且您应该在注释中明确说明为什么要做出例外。

我使用以下测试:我想在“表示空间”中编写的代码是否决定要表示什么或如何表示它?如果答案是什么,那么它更像是业务逻辑,可能属于模板之外。如果是如何呈现它,那么它属于模板(或相关的支持功能)

例如,假设您为某些用户提供10%的折扣。计算折扣前后的具体价格显然是商业逻辑。测试是否有折扣,然后以红色显示是表示逻辑


当然,规则总是有例外的,但是应该承认这些例外,并且你应该在评论中特别说明你为什么要做出例外。

hmm这很酷,我以前没有听说过帮助类……演示类会调用它们吗?什么叫它们?它们是从Template调用的嗯,太酷了,我以前没听说过helper类…presentation类叫它们吗?什么叫它们?它们是从templatesweet中调用的好逻辑…您认为哪一个适用于为href动态构建html?对我来说,似乎是什么和如何..哈哈,我的所有对象都有一个url()方法,返回该对象的规范url。我可以从模板中调用它。但是它只返回URL,而不是一个完全格式化的标签。这里有很好的逻辑…您认为哪一个适用于为href动态构建html?对我来说,似乎是什么和如何..哈哈,我的所有对象都有一个url()方法,返回该对象的规范url。我可以从模板中调用它。但它只返回URL,而不是完全格式化的标签。