I've been banging my head for a few hours now. I have setup a small Magento 2 module. It is enabled everything is working except the Setup scripts never run. Actually from my diagnosis right now, they aren't even required in the setup:upgrade process.
If it could be of any help here are the module configuration files:
registration.php:
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Wizbusiness_CustomerSubscriptions',
__DIR__
);
etc/module.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="Wizbusiness_CustomerSubscriptions" setup_version="0.0.9" />
</config>
Setup/InstallData.php:
<?php
namespace Wizbusiness\CustomerSubscriptions\Setup;
use Magento\Framework\Module\Setup\Migration;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
class InstallData implements InstallDataInterface
{
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$setup->startSetup();
$customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);
/** @var CustomerSetup $customerSetup */
$customerSetup->addAttribute(
Customer::ENTITY,
'subscribedtags',
[
'type' => 'text',
'input' => 'multiselect',
'backend' => 'Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend',
'global' => \Magento\Catalog\Model\Resource\Eav\Attribute::SCOPE_GLOBAL,
'label' => 'Subscribed Tags',
'required' => 0,
'system' => 0, // <-- important, otherwise values aren't saved.
// @see Magento\Customer\Model\Metadata\CustomerMetadata::getCustomAttributesMetadata()
'position' => 100,
'filterable' => true,
'option' => [ 'values' => ['Test', 'Test2', 'Test3' ] ]
]
);
$used_in_forms=array();
$used_in_forms[]="adminhtml_customer";
$used_in_forms[]="checkout_register";
$used_in_forms[]="customer_account_create";
$used_in_forms[]="customer_account_edit";
$used_in_forms[]="adminhtml_checkout";
$customerSetup->getEavConfig()->getAttribute('customer', 'subscribedtags')
->setData('used_in_forms', [$used_in_forms])
->setData("is_used_for_customer_segment", true)
->setData("is_user_defined", 1)
->save();
$setup->endSetup();
}
}
Also a smaller test in Setup/Recurring.php:
<?php
namespace Wizbusiness\CustomerSubscriptions\Setup;
use Magento\Framework\Setup\InstallSchemaInterface;
use Magento\Framework\Setup\SchemaSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;
class Recurring implements InstallSchemaInterface {
protected $logger;
public function __construct(
\Psr\Log\LoggerInterface $loggerInterface
) {
$this->logger = $loggerInterface;
}
public function install( SchemaSetupInterface $setup, ModuleContextInterface $context ) {
touch("<path here>/recurring.txt");
$this->logger->debug('This is running');
}
}
If anybody knows what's up, please help me!
class InstallSchema
inInstallData.php
instead ofclass InstallData
.