我遇到的问题是制作一个新组件我似乎无法让 joomla 读取默认布局文件。这发生在组件的管理端和站点端。将它与我创建的另一个有效的组件进行比较,我看不出它的逻辑原因,因为两个组件都在同一环境中工作。
我知道,由于站点和管理员使用相同的方法,因此在一个中修复它应该在另一个中修复它。所以这是网站方面的事情。
首先是view.html.php
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import Joomla view library
jimport('joomla.application.component.view');
class ComponentViewComponent extends JView{
function display($tpl = null){
parent::display($tpl);
}
}
?>
然后是 tmpl/default.php
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted Access');
// load tooltip behavior
JHtml::_('behavior.tooltip');
?>
hello
如您所见,它仍然是准系统,但是当我尝试在站点或管理员上访问它时,它会说“500:未找到布局默认值”。
我现在已经花了 n 个多小时试图找出可能导致这种情况的我出错的地方。
虽然我怀疑这里重要的是模型/控制器/构造函数
component.php(名称与实际组件不同)
<?php
//No direct access to this file
defined('_JEXEC') or die ('Restricted access');
// import joomla controller library
jimport('joomla.application.component.controller');
// Get an instance of the controller prefixed by GoTireReviews
$controller = JController::getInstance('Component');
// Perform the Request task
$input = JFactory::getApplication()->input;
$controller->execute($input->getCmd('task'));
// Redirect if set by the controller
$controller->redirect();
?>
模型/component.php
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import Joomla modelitem library
jimport('joomla.application.component.modelitem');
class ComponentModelComponent extends JModelItem{
}
?>
控制器.php
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import Joomla controller library
jimport('joomla.application.component.controller');
class ComponentController extends JController{
}
?>
我可能是盲目的并且遗漏了一些东西,但是到目前为止,我花了很多时间尝试进行细微的调整,似乎从头开始重新开始可能是一种不那么耗时的方法。
另请注意,该组件未命名为“组件”,但我使用它来使此示例更具可读性。
编辑:
找到原因了,是因为我在组件名称中使用了review这个词。这样做会欺骗 joomla 的视图方法并导致错误。(我为此目的更改了组件的名称,但没有想到它可能会导致这种情况)