在Joomla 2.5中更改视图的布局

时间:2013-09-15 20:45:28

标签: php templates joomla joomla2.5 joomla-component

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

我在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();
}

3 个答案:

答案 0 :(得分: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

希望这有帮助。

答案 1 :(得分:0)

好的,这就是问题..你不想要另一个布局,你想要一个基于表单而不是渲染的新MVC三元组。因此,如果你看一下你将在后端看到的任何核心内容组件,他们有一个mvc表示...联系人,一个联系人和联系人是编辑器。如果在前端你会注意到com_content和com_weblinks有artc / weblink的mvc,然后单独进行编辑。

您需要一个与editng完全不同的模型和布局以及一组操作,而不仅仅是渲染。

答案 2 :(得分: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();
}