Magento 2 — правильный способ установки модуля

Попытка установить пример модуля в Magento 2 из этот. Ниже приведена структура модуля app/code/NameSpace/Module/

изображение модуля

module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
<module name="Magentostudy_News" setup_version="0.0.1" schema_version="0.0.1"/>
</config>

composer.json

{
"name": "magentostudy/module-news",
"description": "N/A",
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0",
"magento/module-store": "100.0.0",
"magento/module-email": "100.0.0",
"magento/module-ui": "100.0.0",
"magento/framework": "100.0.0"},
"type": "magento2-module",
"version": "0.0.1",
"license": [
"OSL-3.0",
"AFL-3.0"],
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
"Magentostudy\\News\\": ""}
}
}

Registration.php

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Magentostudy_News',
__DIR__
);

Выполнение команды ниже для включения модуля

php ./bin/magento module:enable Magentostudy_News

Это говорит there are no commands defined in the "module" namespace. Также на фронтенде он выдает ниже исключения. Я использую композитор, но не GitHub.

Fatal error: Uncaught exception 'Magento\Framework\Exception\LocalizedException' with message 'Source class "\Magento\Framework\Module\Updater\Setup" for "Magento\Framework\Module\Updater\SetupFactory" generation does not exist.'

Редактирование кода

добавленной Setup папка с файлом InstallSchema.php который включает в себя код ниже

    <?php
/**
* @copyright Copyright (c) 2014 X.commerce, Inc. (http://www.magentocommerce.com)
*/

/* @var $installer \Magento\Setup\Module\SetupModule */

namespace Magentostudy\News\Setup;

use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;

$installer = $this;
$installer->startSetup();

/**
* Creating table magentostudy_news
*/
$table = $installer->getConnection()->newTable(
$installer->getTable('magentostudy_news')
)->addColumn(
'news_id',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
null,
['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true],
'Entity Id'
)->addColumn(
'title',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
255,
['nullable' => true],
'News Title'
)->addColumn(
'author',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
255,
['nullable' => true,'default' => null],
'Author'
)->addColumn(
'content',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
'2M',
['nullable' => true,'default' => null],
'Content'
)->addColumn(
'image',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
null,
['nullable' => true,'default' => null],
'News image media path'
)->addColumn(
'created_at',
\Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
null,
['nullable' => false],
'Created At'
)->addColumn(
'published_at',
\Magento\Framework\DB\Ddl\Table::TYPE_DATE,
null,
['nullable' => true,'default' => null],
'World publish date'
)->addIndex(
$installer->getIdxName(
'magentostudy_news',
['published_at'],
\Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_INDEX
),
['published_at'],
['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_INDEX]
)->setComment(
'News item'
);
$installer->getConnection()->createTable($table);
$installer->endSetup();
  1. Как правильно установить Magento 2 модули?
  2. Какой важный шаг я пропустил?

Ссылочный URL: http://mageinferno.com/blog/setting-up-magento-2-module-right-way-composer-packagist

0

Решение

Привет вот два правильных в вашем модуле, которые вы должны попробовать

1: исправьте composer.json

вот основной пример:

{
"name": "magentostudy/module-news",
"description": "N/A",
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0",
"magento/module-store": "100.0.0",
"magento/module-email": "100.0.0",
"magento/module-ui": "100.0.0",
"magento/framework": "100.0.0"},
"type": "magento2-module",
"version": "0.0.1",
"license": [
"OSL-3.0",
"AFL-3.0"],
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
"Magentostudy\\News\\": ""}
}

}

2:

В вашем каталоге есть одна папка отсутствует

Называется Настроить вместо SQL

для более подробной информации прочитайте эти модули:

https://github.com/magento/magento2-samples

Из имени файла установки должно быть: InstallSchema.php

код что-то вроде:

namespace Magentostudy\News\Setup;

use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\SchemaSetupInterface;

class InstallSchema implements InstallSchemaInterface
{
public function install(SchemaSetupInterface $setup, ModuleContextInterface $context)
{
$installer = $setup;

$installer->startSetup();
$table  = $installer->getConnection()
->newTable($installer->getTable('test_helloworld'))
->addColumn(
'id',
\Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
null,
['identity' => true, 'unsigned' => true, 'nullable' => false, 'primary' => true],
'Id'
)
->addColumn(
'label',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
null,
['default' => null, 'nullable' => false],
'Name'
)
->addColumn(
'value',
\Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
null,
['default' => null, 'nullable' => false],
'Stores'
);
$installer->getConnection()->createTable($table);
$installer->endSetup();
}
}

попробуйте отредактировать ваш файл modules.xml следующим образом

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Magentostudy_News" setup_version="0.0.1">

</module>
</config>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]