为 Joomla 组件添加新视图或一个视图的布局是否更好?

Is it better to add new views or layouts of one view for the Joomla component?

我正在为 Joomla! 开发一个组件! 3. 它有一个 "contact" 视图,显示三个链接,这些链接指向:

  1. 所有可用通讯录的列表。
  2. 用于将联系人添加到一些可用图书的表单。
  3. 您可以导入联系人的页面。

此页面通过 "contact" 视图的名称 default.php 的布局显示。我应该如何实现这 3 页?是通过单独的布局以相同的视图显示它们更好,还是为提到的页面中的每个视图创建三个单独的视图更正确?这三页都是关于联系人的工作。

您可以使用相同的 view 使用不同的 layouts 来完成。假设您有三种布局-

  1. 默认布局,您可以在其中显示所有可用的通讯录。
  2. 表单布局,显示用于添加联系人的表单。
  3. 导入布局,显示导入联系人的页面。

然后在

做三个布局
component/com_yourcomponent/views/contact/tmpl/default.php
component/com_yourcomponent/views/contact/tmpl/default_form.php
component/com_yourcomponent/views/contact/tmpl/default_import.php

现在您可以使用 URL 上的 layout 查询访问布局。假设要显示 form 布局,您必须点击 URL-

http://yoursite.com/index.php?option=com_yourcomponent&view=contact&layout=form

如果我想从菜单访问布局。

是的,如果你想从菜单中访问它们,那么你必须做更多的工作。您必须在同一视图的 tmpl 目录中再创建三个文件以及布局 .php 文件。文件路径为-

component/com_yourcomponent/views/contact/tmpl/default.xml
component/com_yourcomponent/views/contact/tmpl/form.xml
component/com_yourcomponent/views/contact/tmpl/import.xml

样本 .xml 文件(比如 form.xml)看起来像-

    <?xml version="1.0" encoding="utf-8"?>
    <metadata>
        <fields name="params">
            <fieldset name="basic" label="Basic">
                <!-- Your menu settings params are here-->
            </fieldset>
        </fields>
        <layout title="COM_YOURCOMPONENT_FORM_VIEW_DEFAULT_TITLE" option="COM_YOURCOMPONENT_FORM_VIEW_DEFAULT_OPTION">
            <help
                key = "JHELP_MENUS_MENU_ITEM_CONTACT_FORM"
            />
            <message>
                <![CDATA[COM_YOURCOMPONENT_FORM_VIEW_DEFAULT_DESC]]>
            </message>
        </layout>
    </metadata>

而且您还需要在 component/com_yourcomponent/views/contact/view.html.php 处做一些额外的工作,即在 display() 函数中设置来自菜单的布局。

$this->layout_type = str_replace(':_', '', $layout);
$this->setLayout($this->layout_type);

记得

所有视图布局只有一个地方可以进行数据操作。因此,您可以使用 $this->layout_type 捕获布局名称并有条件地应用您的业务逻辑。

希望这对您有所帮助。