我知道有几个类似的主题,但我阅读并尝试了大部分内容,但仍然无法弄清楚如何做到这一点。
我在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();
}
答案 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();
}