我发现,当这个代码片段被添加到我正在创建的自定义组件的视图中时,我将失去管理面板中的默认样式。
<div class="btn-group pull-right hidden-phone">
<label for="limit" class="element-invisible"><?php echo JText::_('JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC');?></label>
<?php echo $this->pagination->getLimitBox(); ?>
</div>
关于为什么会发生这种情况,有什么想法吗?
我还发现,这段代码在相同的视图上也删除了样式:
<?php echo $this->pagination->getListFooter(); ?>
这让我认为这与$this->pagination
有关,这通常是为视图定义的?
好吧,另一个更新。。。
我现在已经清除了那些样式问题,并发现根本问题与$this
变量有关。我有另一个PHP调用,视图应该从数据库中提取数据,如下所示:
<?php foreach ($this->items as $i => $item) :
$ordering = ($listOrder == 'a.ordering');
$canCreate = $user->authorise('core.create', 'com_bbmaps');
$canEdit = $user->authorise('core.edit', 'com_bbmaps');
$canCheckin = $user->authorise('core.manage', 'com_bbmaps');
$canChange = $user->authorise('core.edit.state', 'com_bbmaps');
?>
但是,我再次看到错误-->
Warning: Invalid argument supplied for foreach()
最终,我的问题是在哪里定义$this
相关的数据库?
我看到的唯一定义$this
的地方是在controller.php文件中:
public function display($cachable = false, $urlparams = false)
{
require_once JPATH_COMPONENT.'/helpers/componenthelper.php';
$view = JFactory::getApplication()->input->getCmd('view', 'userdatas');
JFactory::getApplication()->input->set('view', $view);
parent::display($cachable, $urlparams);
return $this;
}
正如您所看到的,它引用了userdatas
视图。我已经从userdatas
视图创建了一个名为photos
的新视图。如何告诉photos
视图从新数据库中提取$this
?
请检查是否关闭了所有打开的标签。当我忘记关闭以前打开的标签或其他标签时,我也遇到了同样的问题。有时,某些编辑器的自动完成功能会错误地将闭包替换为。
--编辑--
如果您没有启用php.ini display_errors指令,也请检查服务器的错误日志。组件中可能存在您在页面上看不到的错误。当出现"致命"PHP错误时,执行将停止,因此停止进一步渲染。
--第二次编辑--
您可以尝试替换以下内容:
<?php foreach ($this->items as $i => $item) :
带有:
<?php if (!empty($this->items) :
foreach ($this->items as $i => $item) :
然后关闭"endforeach"后的"if":
endforeach;
endif;
这将修复"无效参数"错误。
附言:在这种情况下,$很可能对应于模板对象,该对象具有指定给它使用的所有属性。