Я хочу установить extranal sql-файл с модулем, и я следую этому учебнику по ссылке http://docs.joomla.org/J2.5:Creating_a_simple_module/Using_the_Database, но он не работает. вот моя кодировка файла xml и sql. где моя ошибка?
<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="2.5.0" client="site" method="upgrade"> <name>practic_module</name> <author>John Doe</author> <version>1.0.0</version> <description>this is a practice module struckture</description> <files> <filename>mod_helloworld.xml</filename> <filename module="mod_helloworld">mod_helloworld.php</filename> <filename>index.html</filename> <filename>helper.php</filename> <filename>tmpl/default.php</filename> <filename>tmpl/index.html</filename> </files> <config> <install> <sql> <file driver="mysql" charset="utf8">sql/mysql/install.mysql.utf8.sql</file> <file driver="sqlazure" charset="utf8">sql/sqlazure/install.sqlazure.utf8.sql</file> </sql> </install> <uninstall> <sql> <file driver="mysql" charset="utf8">sql/mysql/uninstall.mysql.utf8.sql</file> <file driver="sqlazure" charset="utf8">sql/sqlazure/uninstall.sqlazure.utf8.sql</file> </sql> </uninstall> <update> <schemas> <schemapath type="mysql">sql/mysql/updates</schemapath> <schemapath type="sqlazure">sql/sqlazure/updates</schemapath> </schemas> </update> <fields name="params"> <fieldset name="basic"> <field name="lang" type="sql" default="1" label="Select a language" query="SELECT id AS value, lang FROM #__helloworld" /> </fieldset> </fields> </config> </extension>
и sql – это C: \ xampp \ htdocs \ joom \ modules \ mod_helloworld \ sql \ mysql и файл install.mysql.utf8.sql.
CREATE TABLE IF NOT EXISTS `#__helloworld` ( `id` int(10) NOT NULL AUTO_INCREMENT, `hello` text NOT NULL, `lang` varchar(25) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hello World', 'en-GB'); INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hola Mundo', 'es-ES'); INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Bonjour tout le monde', 'fr- FR');
но доза не работает. база данных не установлена. где моя ошибка? Помощь в PLS
Вы добавили теги <install>
, <uninstall>
и <update>
внутри тегов <config>
которые не должны выполняться. Им нужно выйти на улицу. Вам также необходимо определить папку sql . Вот ваш полный код xml:
<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="2.5.0" client="site" method="upgrade"> <name>practic_module</name> <author>John Doe</author> <version>1.0.0</version> <description>this is a practice module struckture</description> <files> <filename>mod_helloworld.xml</filename> <filename module="mod_helloworld">mod_helloworld.php</filename> <filename>index.html</filename> <filename>helper.php</filename> <filename>tmpl/default.php</filename> <filename>tmpl/index.html</filename> <folder>sql</folder> </files> <install> <sql> <file driver="mysql" charset="utf8">sql/mysql/install.mysql.utf8.sql</file> <file driver="sqlazure" charset="utf8">sql/sqlazure/install.sqlazure.utf8.sql</file> </sql> </install> <uninstall> <sql> <file driver="mysql" charset="utf8">sql/mysql/uninstall.mysql.utf8.sql</file> <file driver="sqlazure" charset="utf8">sql/sqlazure/uninstall.sqlazure.utf8.sql</file> </sql> </uninstall> <update> <schemas> <schemapath type="mysql">sql/mysql/updates</schemapath> <schemapath type="sqlazure">sql/sqlazure/updates</schemapath> </schemas> </update> <config> <fields name="params"> <fieldset name="basic"> <field name="lang" type="sql" default="1" label="Select a language" query="SELECT id AS value, lang FROM #__helloworld" /> </fieldset> </fields> </config> </extension>
Также убедитесь, что структура папок верна
Надеюсь это поможет
Я думаю, вы должны использовать конфигурационный тег только вокруг
<fields name="params"> <fieldset name="basic"> <field name="lang" type="sql" default="1" label="Select a language" query="SELECT id AS value, lang FROM #__helloworld" /> </fieldset> </fields>
в вашем загруженном почтовом ящике в файле манифеста нет <folder>sql</folder>
– поэтому установщик не скопирует папку при установке в каталог модуля и не выполнит sql.
installer: https://github.com/joomla/joomla-cms/blob/master/libraries/cms/installer/installer.php#L912
Вам нужно включить эти файлы в тег файлов, например:
<files> <!-- The others files that you added --> <filename>sql/mysql/install.mysql.utf8.sql</filename> <filename>sql/sqlazure/install.sqlazure.utf8.sql</filename> <filename>sql/mysql/uninstall.mysql.utf8.sql</filename> <filename>sql/sqlazure/uninstall.sqlazure.utf8.sql</filename> <filename>sql/sqlazure/updates</filename> <!-- Not sure about this one, sorry --> </file>
Я тоже учусь, и я не знаю, нужен ли файл обновлений для добавления в тег файлов. Объедините это с ответом Лоддера. Надеюсь быть полезным.