当前位置: 首页 > 知识库问答 >
问题:

正确使用MVC在Joomla控制器中显示前端

太叔炎彬
2023-03-14

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

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

如果这不是正确的方法,请告诉我如何从单个控制器为不同的任务设置不同的视图。视图在视图中

共有2个答案

洪河
2023-03-14

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

>

  • JED社区有几个很好的文档来帮助您提交内容,包括使用协议、扩展目录常见问题和关于2010年底开始的“增强审批过程”的博客条目。

    就“社区”而言,处理来自同一控制器的不同视图的“正确”方法是确保最终用户/设计师可以使用Joomlas覆盖。因此,tmpl目录中的每个文件都应该尝试只包含HTML和多个

    如果你看看标准的Joomla!2.5组件控制器和子控制器的排列往往与视图相匹配,例如,如果您查看com\u内容,则文章文章特色都有相应的控制器和视图。

    话虽如此,根据用户正在执行的任务,为相同的视图提供不同的tmpl是可以接受和支持的。这是通过使用调用URL的controller.task形式来实现的。例如,我们的一个组件呈现相同的视图,但是基于用户的权限,他们可能会查看edittmpl或>运行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;
    }
    

  • 沈博达
    2023-03-14

    最初我不会回答这个问题,但是“被Joomla社区接受”说服我加入我的两位。

    IMHO,典型的Joomla用户不是MVC、PHP甚至开发方面的专家,所以我首先关心的是让他们“接受”。我尝试在一个普遍接受的组件(如Joomla内容组件)之后对任何组件开发进行建模,以及用户如何与之交互。为文章添加新菜单项时,请注意选项的组织方式—归档、单一、类别、特色等。。这是用户理解的组织,因此我相应地组织我的MVC

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

     类似资料:
    • 我试图在Joomla组件中构建我的第一个jSON表单提交。 从Joomla控制器发送超文本标记语言响应是否有任何特殊的编码或条件? 我使用的是2.5 Joomla MVC。以下是一些测试/观察结果- 1) 表单提交和响应已单独测试,并按预期工作。我有一个separarate PHP文件,它被提交到一个服务器端PHP文件,该文件接受jSON数据并发送一个HTML响应,客户端根据响应进行正确更新。 2

    • 问题内容: 我在AngularJS应用程序中为i18n 使用angular-translate。 对于每个应用程序视图,都有一个专用的控制器。在下面的控制器中,我设置了要显示为页面标题的值。 码 的HTML 的JavaScript 我正在使用angular-translate-loader-url扩展名加载翻译文件。 问题 在初始页面加载时,将显示翻译键,而不是该键的翻译。翻译是,但我看到了。 第

    • spring MVC中controllin异常流的良好实践是什么? 假设我有一个DAO类,它将对象保存到数据库中,但如果违反了某些规则,例如名称太长、年龄太低,则抛出异常, 现在,如果我想保存名称超过10的A,它应该抛出异常。 但是有一个dataManipulator对象 和控制器 我希望在不抛出异常的情况下保留控制器(我听说这是一个很好的做法)。 但我的问题是,在这种情况下,A\u Data\u

    • 这让我很困惑。而不是使用一个路径变量值的正确URLhttp://somedomain.com:8080/someWebApp/essays/main/student/25/activity/add“(其中25是路径变量{code>{studentId}}的值)我在我的URL中得到这个值:”http://somedomain.com:8080/someWebApp/essays/main/stude

    • 我试图设置cookie来定义用户首选的语言。我通过一个指向助手控制器的链接做到了这一点: /设置区域设置/{locale} 我知道这是正确的,因为如果我这样做: 它显示所选择的正确区域设置。所以下一步是使用中间件实际应用这个选择的语言环境,我把它命名为“设置语言环境”: 但如果我执行 在中间件中,它读取所有加扰的cookie。所以我的问题是为什么它会这样做,我如何从这里正确地读取cookie?

    • 问题内容: 文件包含 我想使用Java在控制台中以北印度语显示。 如果我只是像这样打印String str =“ \ u0905 \ u092d \ u0940 \ u0938 \ u092e \ u092f \ u0939 \ u0948 \ u091c \ u0928 \ u0924 \ u093e \ u091c \ u094b \ u091a \ u093e \ u093e \ u0939