【问题标题】:Proper use of MVC to display front-end in the Joomla controller正确使用MVC在Joomla控制器中展示前端
【发布时间】:2012-06-26 02:03:26
【问题描述】:

我正在开发一个 Joomla 组件,我有许多任务要在组件中执行。我目前正在做的是拥有一个视图和对应的控制器。现在,如果用户请求某些任务,我只需在控制器中调用相应的方法。在这个方法本身中,我编写了所有显示给用户的 HTML 代码。一切正常。

我唯一的疑问是,我是否仍然遵循 MVC 模型,我的组件会被 Joomla 社区接受吗?

如果这不是正确的方法,请告诉我如何从单个控制器为不同的任务设置不同的视图。视图位于 views>name>tmpl>default.php 和 view>name>tmpl>sample.php

【问题讨论】:

    标签: php model-view-controller joomla content-management-system


    【解决方案1】:

    最初不打算回答这个问题,但“被 Joomla 社区接受”说服我投入我的两个比特。

    恕我直言,典型的 Joomla 用户不是 MVC、PHP 甚至开发方面的专家,所以我首先关心的是让他们“接受”它。我尝试在 Joomla Content 组件等普遍接受的组件之后建模任何组件开发,以及用户如何与之交互。当您为文章添加新菜单项时,请注意选项的组织方式 - 存档、单篇、类别、精选等。这是用户理解的组织,因此我相应地组织 MVC

    也许在技术上不是一个完美的答案,但归根结底,Joomla CMS 通常适用于非技术用户,所以我通常首先从他们的角度来看它,确保我在技术上保持健全。

    【讨论】:

    • 谢谢,但这不是我期望的答案
    • 很公平,但您问“我的组件是否会被 Joomla 社区接受”并表示您的 MVC 正在运行。
    • 我不是从用户的角度询问,而是从开发人员的角度询问。开发 joomla 组件是否需要遵循一些严格的规则。
    • 必须考虑一些规则,例如,index.html 文件必须放在每个文件夹中,但您的组件就是您的组件,只要它有效,JED 将接受它。
    • @Lodder 你确定 JED 没有任何严格的组件编码标准吗?
    【解决方案2】:

    这似乎需要一个多部分的答案,所以,

      1234563 /p>
    1. 就“社区”而言,处理来自同一控制器的不同视图的“正确”方法可能是确保最终用户/设计人员可以使用 Joomla! 的覆盖。因此,tmpl 目录中的每个文件都应尽可能仅包含 HTML 和多个 <?php echo $this->myVariable; ?>,并偶尔循环以解开一组数据以供显示。您的控制器不应生成 HTML,否则最终用户/设计人员将无法为您的组件创建模板覆盖。

    2. 如果您查看标准的 Joomla! 2.5 组件 Controllers 和 sub-controllers 的排列往往与视图相匹配,e.g.如果您查看com_content,则articlesarticlefeatured 有一个相应的控制器和视图。

    3. 话虽如此,根据用户正在执行的task,同一view 具有不同的tmpl 是可以接受和支持的。这是通过使用controller.task form of the calling URL 完成的。例如我们的组件之一呈现相同的视图,但根据用户权限,他们可能正在查看edit tmpl 或run tmpl 文件。实现这一点的代码非常简单。

    例如

    if($canDo->get('core.edit')) {
        $plan = '<a href="'.JRoute::_( 'index.php?option=com_easystaging&task=plan.edit&id='. $row->id ).'">'.$row->name.'</a>';
    } elseif ($canDo->get('easystaging.run')) {
        $plan = '<a href="'.JRoute::_( 'index.php?option=com_easystaging&task=plan.run&id='. $row->id ).'">'.$row->name.'</a>';
    } else {
        $plan = $row->name;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-11-06
      • 2012-08-31
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多