Joomla 自定义组件未找到 404 错误

Posted

技术标签:

【中文标题】Joomla 自定义组件未找到 404 错误【英文标题】:Joomla custom component not found 404 error 【发布时间】:2013-12-23 06:45:48 【问题描述】:

我创建了 joomla 自定义组件并安装没有任何错误。但是当我尝试访问组件时,它会抛出 404 ,组件未找到错误。

组件的名称是 com_eta。 我使用了 administrator/index.php?option=com_eta 来访问后端组件。

我用谷歌搜索,并检查了几次源代码,但我无法弄清楚我的代码有什么问题。我还通过搜索 com_eta 来检查数据库。我找不到任何不寻常的东西。

这是我的后端组件文件的 xml 代码和 php 代码。如果有人能指出我正确的方向,非常感谢。

travels.xml

    <?xml version="1.0" encoding="utf-8"?>
<extension version="3.0" type="component" method="upgrade">
    <name>com_eta</name>
    <creationDate>Dec 2013</creationDate>   
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <version>1.0</version>  
    <description>CUSTOM JOOMLA COMPONENT</description>

    <administration>
        <menu>Travels </menu>
        <files folder="admin">
            <filename>travels.php</filename>
            <filename>index.html</filename>         
            <folder>controllers</folder>            
            <folder>assets</folder>
            <folder>helpers</folder>
            <folder>tables</folder>
            <folder>models</folder>
            <folder>views</folder>
        </files>

    </administration>
    <files folder="site">
        <filename>travels.php</filename>
        <filename>index.html</filename>         
        <folder>controllers</folder>            
        <folder>views</folder>
    </files>

</extension>

travels.php

 <?php
//give no direct access
defined('_JEXEC') or die('Restricted access');

define("ETA_COMPONENT", "com_eta");
define("ETA_COMPONENT_NAME", "Travel Agency");
define("ETA_COMPONENT_LINK", "index.php?option=" . ETA_COMPONENT);


if (!defined('DS'))
    define('DS', DIRECTORY_SEPARATOR);


//check weather user can access the component
if (!JFactory::getUser()->authorise('core.manage', 'com_eta')) 
    return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));


//load the helper classes we need all the time
require JPATH_COMPONENT_ADMINISTRATOR . DS . 'helpers' . DS . 'general_helper.php';

//set default controller to configuratrion
$controller = JRequest::getVar('controller', 'admindata');

//get the task
$task = JRequest::getVar('task', 'display');

//assign controller class and load it
$classname = 'TravelsController' . $controller;


//convert task name and controllr name to lower case
$controllerName = strtolower($controller);
$taskName = strtolower($task);

//load the controller file
require_once JPATH_COMPONENT . DS . 'controllers' . DS . $controller . 'controller.php';
//excute the controller
$controller = new $classname;
$controller->execute($task);

$controller->redirect();

【问题讨论】:

如果您的组件名称是 com_eta 我认为您应该将 travels.xml 和 travels.php 更改为 eta.xml 和 eta.php 是的,就是这样。非常感谢。你刚刚拯救了我的一天...... :) 【参考方案1】:

mohsenkw 给出了正确答案。问题是我命名文件的方式。 由于我的组件名称是 com_eta ,因此 travels.php 和 travels.xml 应该是 eta.php 和 eta.xml 的名称。

【讨论】:

以上是关于Joomla 自定义组件未找到 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

未找到具有自定义分页 404 的自定义分类和自定义帖子类型

wordpress 3.8.1 类别第 2 页错误 404 未找到 / 自定义帖子类型

php #Joomla自定义404页面。

joomla 1.5 搜索与自定义组件的集成?

如何自定义 Joomla 2.5 联系人组件?

Google 404 和 .NET 自定义错误页面