0

I am using ScandiPwa as storefront and Third party Marketplace Module with Vendor Dashboard

Scandipwa is using JWT token based login while Marketplace module is using Magento Customer Session to login User to Dashboard

Issue: When Vendor gets Logged In to Dashboard and for some reason he refresh the storefront he gets Logged Out from vendor dashboard

Can anyone help with for finding a solution of this issue

1 Answer 1

-2

In Magento 2, when you override an admin template and want to add a button along with custom JavaScript, you need to ensure that:

  1. The layout XML file is correctly set up to include your JavaScript.
  2. The JavaScript file is properly linked in the page.
  3. The JavaScript logic is correctly initialized for the admin page.

Here are the steps to ensure the layout and JavaScript integration work:

1. Override the Admin Template Using Preferences

In your custom module, you can override the admin template using preferences in di.xml to replace the default template. For example:

xml Copy code

<!-- app/code/YourCompany/YourModule/etc/di.xml -->
<type name="Magento\Backend\Block\Template">
    <arguments>
        <argument name="template" xsi:type="string">YourCompany_YourModule::your_template.phtml</argument>
    </arguments>
</type>

2. Create the Layout XML

Ensure that the layout XML for your admin page includes your JavaScript. For example, you can add a custom block for your JavaScript file like this:

xml Copy code

<!-- app/code/YourCompany/YourModule/view/adminhtml/layout/adminhtml_your_page.xml -->
<?xml version="1.0"?>
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout.xsd">
    <head>
        <script src="YourCompany_YourModule::js/custom.js"/>
    </head>
</layout>

This XML includes your custom JS file custom.js under the YourCompany_YourModule namespace in the view/adminhtml/web/js/ directory.

3. Place JavaScript File in the Correct Directory

Place your custom.js in the correct directory:

bash Copy code

app/code/YourCompany/YourModule/view/adminhtml/web/js/custom.js

4. Adding the Button in the Template

In the overridden template file (your_template.phtml), you can add a button:

php Copy code

<button type="button" class="action-default scalable save" id="your-button-id">
    <span><?php echo __('Click Me') ?></span>
</button>

5. JavaScript Logic

Make sure your JavaScript is ready to handle the button click. In your custom.js:

javascript Copy code

define([
    'jquery',
    'mage/adminhtml'
], function ($) {
    'use strict';

    return function () {
        // Attach click event to the button
        $('#your-button-id').on('click', function () {
            alert('Button clicked!');
        });
    };
});

6. Ensure JS is Loaded

Make sure your JS is loaded in the admin page by verifying the tag in the page source. If the JS isn't loading, you may need to clear Magento's cache:

bash Copy code

php bin/magento cache:flush

7. Flush Cache and Deploy Static Content

After making changes to the layout and adding custom JavaScript, be sure to deploy static content and clear the cache:

bash Copy code

php bin/magento setup:static-content:deploy
php bin/magento cache:flush

Debugging Tips:

  • Check your browser's developer tools (Console and Network tab) for any JavaScript errors or missing files.

  • Verify the layout XML file is correctly applied to your admin page. You can do this by inspecting the page layout and confirming the inclusion of the custom JS.

1
  • 1
    Do you have trouble understanding the rules of the site regarding ChatGPT? Perhaps you should ask about them on Magento Meta... Commented Dec 6 at 18:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.