【问题标题】:Component install error: JInstaller: :Install: File does not exist组件安装错误:JInstaller: :Install: 文件不存在
【发布时间】:2013-08-07 02:01:09
【问题描述】:

我只是按照video 创建了一个组件。我创建了名为 admin.zip 的组件。我在 joomla 3.0 中安装时收到以下警告。

警告

JInstaller: :Install: 文件不存在 C:\wamp\www\Content\tmp\install_52009de34a2c1\site\language\en-GB.com_helloworld.ini

JInstaller: :Install: 文件不存在 C:\wamp\www\Content\tmp\install_52009de34a2c1\admin\language\en-GB.com_helloworld.ini

我在组件菜单下获得 helloworld 组件。但是当我点击它时它给了我错误。它应该向我显示 Hello world,如视频所示。

我的 wamppserver 版本是 2.4,使用 joomla 3.0。

我该如何解决这个问题

The error while clicking on hello world component is like this

我的 helloworld.xml 文件包含此代码

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">

    <name>com_helloworld</name>
    <creationDate>November 2009</creationDate>
    <author>David Thorn</author>
    <authorEmail>info@thornwebdesign.org</authorEmail>
    <authorUrl>http://www.example.org</authorUrl>
    <copyright>Copyright Info</copyright>
    <license>License Info</license>
    <version>1.0.0.1</version>
    <description>Description of the Hello World component ...</description>
    <files folder="site">
            <filename>index.html</filename>
            <filename>helloworld.php</filename>
            <filename>controller.php</filename>
            <folder>css</folder>
            <folder>js</folder>
            <folder>views</folder>
            <folder>models</folder>
            <folder>controllers</folder>
            <folder>helpers</folder>
            <folder>language</folder>
        </files>
        <languages folder="site">
                        <language tag="en-GB">language/en-GB.com_helloworld.ini</language>
                        <language tag="en-GB">language/en-GB.com_helloworld.sys.ini</language>
        </languages>    
    <administration>
            <menu>com_helloworld</menu>
            <files folder="admin">
                <filename>index.html</filename>
                <filename>helloworld.php</filename>
                <filename>controller.php</filename>
                <folder>css</folder>
                <folder>js</folder>
                <folder>views</folder>
                <folder>models</folder>
                <folder>controllers</folder>
                <folder>helpers</folder>
                <folder>language</folder>
            </files>
            <languages folder="admin">
                        <language tag="en-GB">language/en-GB.com_helloworld.ini</language>
                        <language tag="en-GB">language/en-GB.com_helloworld.sys.ini</language>
            </languages>            
    </administration>

 </extension>

在我的 helloworld.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 HelloWorld
$controller = JController::getInstance('Helloworld');

// Perform the Request task
$input = JFactory::getApplication()->input;
$controller->execute($input->getCmd('task'));

 // Redirect if set by the controller
  $controller->redirect();
  ?>

更新

我在 joomla 2.5 中成功完成了此操作,但在最新版本的 joomla 中无法正常工作。我应该怎么做才能让它在 joomla 3.0 中工作

【问题讨论】:

  • 它告诉你有一个文件丢失。创建文件。
  • 我已经在那个指定的位置有那个 php 文件。安装我的组件后,这些文件会在这些目录中创建。
  • 检查你的 xml 文件有些文件不是 extis 也遵循 Joomla 的正确教程docs.joomla.org/Developing_a_Model-View-Controller_Component/…
  • 我已经编辑了我的问题并显示了我的 helloworld.xml 文件。请告诉我如何编辑它。

标签: php joomla joomla3.0


【解决方案1】:

检查您是否已将此代码添加到您的 XML:

<languages>
        <language tag="en-GB" client="site">language/en-GB/en-GB.com_helloworld.ini</language>
        <language tag="en-GB" client="site">language/en-GB/en-GB.com_helloworldt.sys.ini</language>
</languages>

和:

<administration>
... 
    <languages>
            <language tag="en-GB" client="site">language/en-GB/en-GB.com_helloworld.ini</language>
            <language tag="en-GB" client="site">language/en-GB/en-GB.com_helloworld.sys.ini</language>
    </languages>
...
</administration>

并检查文件是否包含在您的安装 ZIP 中 - 在正确的文件夹中,例如:

语言/zh-CN/ ...

请注意,文件的路径可能因您的扩展而异。

一月

【讨论】:

  • 在我的 xml 文件中,我有 language/en-GB.com_helloworld.inilanguage/en-GB.com_helloworld.sys.ini 以及 language/en-GB。 com_helloworld.inilanguage/en-GB.com_helloworld.sys.ini
【解决方案2】:

您的 xml 文件路径中缺少 en-GB 子文件夹声明。 xml: language/en-GB.com_helloword.sys.ini 而它应该是 language/en-GB/en-GB.helloworld.sys.ini 和路径:语言/en-GB/en-GB.helloworld.sys.ini 当然,其他语言文件也有同样的模式。

*因为您的编辑和源代码包含在内,包括带有更正的完整 xml 代码(文件路径和扩展名结束标记)

`

<?xml version="1.0" encoding="utf-8"?>

<name>com_helloworld</name>
<creationDate>November 2009</creationDate>
<author>David Thorn</author>
<authorEmail>info@thornwebdesign.org</authorEmail>
<authorUrl>http://www.example.org</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<version>1.0.0.1</version>
<description>Description of the Hello World component ...</description>
<files folder="site">
        <filename>index.html</filename>
        <filename>helloworld.php</filename>
        <filename>controller.php</filename>
        <folder>css</folder>
        <folder>js</folder>
        <folder>views</folder>
        <folder>models</folder>
        <folder>controllers</folder>
        <folder>helpers</folder>
        <folder>language</folder>
    </files>
    <languages folder="site">
                    <language tag="en-GB">language/en-GB/en-GB.com_helloworld.ini</language>
                    <language tag="en-GB">language/en-GB/en-GB.com_helloworld.sys.ini</language>
    </languages>    
<administration>
        <menu>com_helloworld</menu>
        <files folder="admin">
            <filename>index.html</filename>
            <filename>helloworld.php</filename>
            <filename>controller.php</filename>
            <folder>css</folder>
            <folder>js</folder>
            <folder>views</folder>
            <folder>models</folder>
            <folder>controllers</folder>
            <folder>helpers</folder>
            <folder>language</folder>
        </files>
        <languages folder="admin">
                    <language tag="en-GB">language/en-GB/en-GB.com_helloworld.ini</language>
                    <language tag="en-GB">language/en-GB/en-GB.com_helloworld.sys.ini</language>
        </languages>            
</administration>

` (不能包含扩展的开始和结束标记,由于某种原因它不会被打印,请确保正确包含它们)

对于您的其他问题,您可能需要在 helloworld.php 中导入 joomla 控制器库:

jimport('joomla.application.component.controller');

之后

defined('_JEXEC') or die('Restricted access');

并替换它:

$controller = JController::getInstance('Helloworld');

用这个:

$controller = JControllerLegacy::getInstance('Helloworld');

【讨论】:

  • 我有 en-GB 文件夹,其中有这两个文件 /en-GB.helloworld.sys.ini 和 en-GB.com_helloworld.ini。我也编辑了我的问题并显示了我的 helloworld.php 文件,我在其中导入了 joomla 控件库。
  • 错误地我没有复制我的最后一行helloworld.xml。结束扩展标签位于行尾。如果没有扩展标签,我在安装软件包时遇到错误。它说“JInstaller::安装:找不到 Joomla XML 安装文件”。另外,我想问一下,只需在我的 php 页面中添加 JControllerLegacy 就可以在 Joomla 3.0 中使用,或者我还必须进行一些其他更改。
  • 如果您复制/粘贴我提供的代码并包含 标签,它是否有效?至于 JControllerLegacy,您可以尝试并告诉我们。如果需要任何更改,您可以咨询这个docs.joomla.org/…
猜你喜欢
  • 1970-01-01
  • 2013-07-27
  • 2013-11-25
  • 2013-05-22
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 2013-02-25
相关资源
最近更新 更多