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


person Slimshadddyyy    schedule 29.12.2015    source источник
comment
вы пытаетесь использовать стабильную версию модуля выпуска?   -  person AddWeb Solution Pvt Ltd    schedule 29.12.2015
comment
Ссылка на модуль — github.com/darshanb87/magento2-extension-example   -  person Slimshadddyyy    schedule 29.12.2015
comment
Пожалуйста, добавьте ссылку на Registration.php в модуль composer.json › его раздел автозагрузки.   -  person AddWeb Solution Pvt Ltd    schedule 29.12.2015
comment
Вы можете проверить пример здесь: github.com/magento/magento2-samples   -  person AddWeb Solution Pvt Ltd    schedule 29.12.2015


Ответы (1)


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

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 :

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

Вызывается Setup вместо 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>
person Jayram Prajapati    schedule 29.12.2015
comment
Спасибо за ответ. Смотрите мое редактирование кода, как вы указали. Что дальше я должен делать после обновления выше? Я все еще что-то упускаю? - person Slimshadddyyy; 29.12.2015
comment
Это зависит от того, с какой ошибкой вы столкнулись сейчас, но я могу помочь вам в этом больше, если вы поделитесь со мной подробной информацией и отметите мой ответ как полезный. - person Jayram Prajapati; 29.12.2015
comment
Я поделился всеми деталями в своем вопросе, дайте мне знать, если вам нужна дополнительная информация. Я отмечу его принятым, как только смогу установить модуль. Исключение составляет 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.' - person Slimshadddyyy; 29.12.2015
comment
также удалите папку sql и data - person Jayram Prajapati; 29.12.2015
comment
Сделал все как сказано выше. Как узнать, правильно ли он установлен? Нужно ли мне запускать какую-либо команду, так как она все еще выдает ту же ошибку - person Slimshadddyyy; 29.12.2015
comment
я обновил свой ответ следующим образом: ‹?xml version=1.0?› ‹config xmlns:xsi=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› и попробуйте чтобы удалить папку sql и данных из вашего модуля - person Jayram Prajapati; 29.12.2015
comment
и попробуйте эту настройку php magento: обновите и отправьте мне снова файлы, которые вы обновили, а также снимок экрана вашего корня модуля - person Jayram Prajapati; 29.12.2015