Hello,
I'am trying to add a short description to categories (like product short description). I followed this article https://devdocs.magento.com/guides/v2.3/ui_comp_guide/howto/add_category_attribute.html but this is not working. I replaced the boolean attribute in the article by a text attribute.
InstallData.php :
use Magento\Framework\Setup\{
    ModuleContextInterface,
    ModuleDataSetupInterface,
    InstallDataInterface
};
use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
class InstallData implements InstallDataInterface
{
    private $eavSetupFactory;
    public function __construct(EavSetupFactory $eavSetupFactory) {
        $this->eavSetupFactory = $eavSetupFactory;
    }
    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
        $eavSetup->addAttribute(\Magento\Catalog\Model\Category::ENTITY, 'category_short_description', [
            'type'     => 'varchar',
            'label'    => 'Short description',
            'input'    => 'text',
            'sort_order'    => 45,
            'source'   => '',
            'visible'  => true,
            'default'  => 'null',
            'required' => false,
            'user_defined' => false,
            'global'   => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
            'group'    => '',
            'backend'      => ''
        ]);
    }
}And I created category_form.xml :
use Magento\Framework\Setup\{
    ModuleContextInterface,
    ModuleDataSetupInterface,
    InstallDataInterface
};
use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
class InstallData implements InstallDataInterface
{
    private $eavSetupFactory;
    public function __construct(EavSetupFactory $eavSetupFactory) {
        $this->eavSetupFactory = $eavSetupFactory;
    }
    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
        $eavSetup->addAttribute(\Magento\Catalog\Model\Category::ENTITY, 'category_short_description', [
            'type'     => 'varchar',
            'label'    => 'Short description',
            'input'    => 'text',
            'sort_order'    => 45,
            'source'   => '',
            'visible'  => true,
            'default'  => 'null',
            'required' => false,
            'user_defined' => false,
            'global'   => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_STORE,
            'group'    => '',
            'backend'      => ''
        ]);
    }
}I executed setup:upgrade and clean:cache, then the new attribute is displayed in backend for category edition. But the value set in the new attribute is not saved when I save the category.
I have the following errors messages in debug.log :
[2020-05-11 10:36:18] main.DEBUG: cache_invalidate:  {"method":"POST","url":"https://creativemusicshop.com/cmsadm/catalog/category/save/key/8302823a26af30b0fe6df5417100717e43fe25c471802d1a7ae16c1842004be4/","invalidateInfo":{"tags":["cat_c"],"mode":"matchingAnyTag"}} []
[2020-05-11 10:36:18] main.DEBUG: cache_invalidate:  {"method":"POST","url":"https://creativemusicshop.com/cmsadm/catalog/category/save/key/8302823a26af30b0fe6df5417100717e43fe25c471802d1a7ae16c1842004be4/","invalidateInfo":{"tags":["cat_c_3","FPC"],"mode":"matchingTag"}} []
[2020-05-11 10:36:18] main.DEBUG: cache_invalidate:  {"method":"POST","url":"https://creativemusicshop.com/cmsadm/catalog/category/save/key/8302823a26af30b0fe6df5417100717e43fe25c471802d1a7ae16c1842004be4/","invalidateInfo":{"tags":["cat_c_p_3","FPC"],"mode":"matchingTag"}} []
[2020-05-11 10:36:18] main.DEBUG: cache_invalidate:  {"method":"POST","url":"https://creativemusicshop.com/cmsadm/catalog/category/save/key/8302823a26af30b0fe6df5417100717e43fe25c471802d1a7ae16c1842004be4/","invalidateInfo":{"tags":["cat_c_3","FPC"],"mode":"matchingTag"}} []
[2020-05-11 10:36:18] main.DEBUG: cache_invalidate:  {"method":"POST","url":"https://creativemusicshop.com/cmsadm/catalog/category/save/key/8302823a26af30b0fe6df5417100717e43fe25c471802d1a7ae16c1842004be4/","invalidateInfo":{"tags":["cat_c_3"],"mode":"matchingAnyTag"}} []
[2020-05-11 10:36:18] main.DEBUG: cache_invalidate:  {"method":"POST","url":"https://creativemusicshop.com/cmsadm/catalog/category/save/key/8302823a26af30b0fe6df5417100717e43fe25c471802d1a7ae16c184200I have no other error messages.
I also tried only the code in the article with the boolean example but this is the same, when I modify the value, this is not saved !
Is some can help me please ?
I'am running under magento CE 2.3.4
Solved! Go to Solution.
Hi @Nishu Jindal ,
Many thanks again for your help, finally the issue was about the setup:upgrade which not create the EAV attribute in the database. I resolved the problem by deleting my module in setup_module table and after run setup:upgrade.
Regards,
Hi @Yohannento ,
Can you please check the below link and do the required changes in your install data file.
I hope this works for you.
Thanks!
---------------------------------------
Problem Solved! Click Kudos & Accept as Solution!
Hi @Nishu Jindal ,
Thanks for your reply, I followed the link and there is no solution for Magento 2.3.4. There is another contributor with the same issue on the same version but I cannot comment on Stackexchange because I have no reputation. Thanks for your help, I created an issue on Devdoc Magento Help. I hope that someone can help me.
Hi @Yohannento
Thanks for the prompt response. I mentioned the link Url so that you will do the below change in your installData.php file
'used_in_product_listing' => true,
I tried the same code at my end in the same version and it is working fine for me. Please try at your end once.
Thanks!
--------------------------------------
Problem Solved! Click Kudos and Accept as Solution!
Hi @Nishu Jindal ,
Many thanks again for your help, finally the issue was about the setup:upgrade which not create the EAV attribute in the database. I resolved the problem by deleting my module in setup_module table and after run setup:upgrade.
Regards,
Hi @Yohannento ,
Glad to know your problem is solved.
Thanks!
Problem solved! Click Kudos & Accept as Solution.