3

我知道周围有几个类似的主题,但我阅读并尝试了其中的大部分,但仍然无法弄清楚如何做到这一点。

我在 Joomla 2.5 中编写了一个组件,到目前为止它可以工作。我有不同的视图,我可以使用 controller.php 加载视图。其中一个视图显示了我的数据库中的一个表(关于团队的数据)。

现在我想要另一个相同视图的布局,它将数据库表显示为表单,以便可以更改内容。

那是文件结构:

意见/
- 团队/
- - tmpl/
- - - default.php
- - - modify.php
- - view.html.php

这不在 view.html.php 文件中:

...
// Overwriting JView display method
function display($tpl = null) {

    ...

    $this->setLayout('modify');
    echo $this->getLayout();
    // Display the view
    parent::display($tpl);
}

我尝试了 setLayout、$tpl = ...、default_modify.php 等的不同组合,但我总是得到默认布局或一些错误,如“找不到布局修改”

我用 .../index.php?option=com_test&task=updateTeams 加载网站

controller.php 看起来像这样:

function updateTeams(){
    $model = $this->getModel('teams');
    $view = $this->getView('teams','html');
    $view->setModel($model);

    $view->display();
}
4

3 回答 3

5

我遇到了类似的问题,我创建了某种用户配置文件视图,并希望他们能够编辑字段而无需为其创建新模型(会有类似的功能,讨厌冗余......)。对我有用的是简单地调用这样的布局:

index.php?option=com_mycomponent&view=myview& layout=edit(在您的情况下,“编辑”将是“修改”)

为此,我没有触及 view.html.php(好吧,我一开始就这样做了,但我不必这样做。)。而且您也不需要使用控制器。如果要加载修改视图,只需在常规视图中添加一个按钮,链接到修改布局。无需更改任何其他内容。

我碰巧写了一篇关于它的博客文章,如果你想看看:http: //violetfortytwo.blogspot.de/2012/11/joomla-25-multiple-views-one-model.html

希望这可以帮助。

于 2013-09-17T09:01:58.377 回答
0

好的,这就是问题所在.. 你不想要另一个布局,你想要一个基于表单而不是渲染的新 MVC 三元组。因此,如果您查看任何核心内容组件,您将在后端看到它们有一个 mvc 用于 say ...contacts 和一个用于联系和联系的 mvc 是编辑器。如果在前端,您会注意到 com_content 和 com_weblinks 具有用于 artice/weblink 的 mvc,然后将它们分开用于编辑。

您需要一个非常不同的模型和布局以及一组用于编辑的操作,而不仅仅是渲染。

于 2013-09-15T20:53:41.360 回答
0

老话题,但它可能仍然有帮助。
似乎当一个人想要改变布局时,$tpl一定不能包含在the display()或必须是null

所以前面的代码是:

function display($tpl = null) {
    /* ... */
    $this->setLayout('modify');
    // Display the view without the $tpl (or be sure it is null)
    parent::display();
}
于 2017-10-18T09:28:09.903 回答