2

I want to create a new custom Block and Block phtml file same as the Customer Index Block for use to the customer, when customer login the customer just click on the left navigation link and access the phtml file.

I have added the custom link already in the below XML file:

app\design\frontend\Vendor\Theme\Magento_Customer\layout/customer_account.xml

<block class="Magento\Framework\View\Element\Html\Link\Current" name="customer-account-navigation-account-myinformation-link">
    <arguments>
        <argument name="label" xsi:type="string" translate="true">my information</argument>
        <argument name="path" xsi:type="string">customer/account/myinformation</argument>
    </arguments>
</block>

After clicking on this link, I want to call Block to get customer data like email, name mobile, address etc.

Please help me if anyone has created the Custom Block and Custom phtml file in the Magento_Customer module.

0

I think you need to extend Magento_Customer by create new controller customer/account/myinformation in your module with adding configuration.

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="customer" frontName="customer">
            <module name="Magento_Customer" />
        </route>
    </router>
</config>

Next you can create a layout and blocks.

Add new link in My Account: https://webkul.com/blog/account-navigation-link-magento2/

| improve this answer | |
  • thanks for your answer. Could you please share the complete answer here. I am still stuck at this module. I will accept and upvote you answer. – mageDev0688 May 8 '17 at 6:01
  • @mageDev0688 I found answer early that wrote additional information :) Try this magento.stackexchange.com/a/121359/40609 – Mykhailo Shatilov May 8 '17 at 13:02
  • thanks I have created the module, but right now it's giving 404 error. – mageDev0688 May 15 '17 at 11:16
0

Create a Module Namspace/Customer

Create xml view/frontend/layout/customer_account_myinformation.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="2columns-left"  xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <update handle="customer_account"/>
    <body>

        <referenceContainer name="content">
            <block class="NameSpace\Customer\Block\Account\MyInformation" name="myinformation" template="account/myinformation.phtml"></block>
        </referenceContainer>

    </body>
</page>

Create phtml file view/frontend/templates/account/myinformation.phtml

Add Your Code in phtml

Create Controller Controller/Account/MyInformation.php

    <?php

namespace Namespace\Customer\Controller\Account;

use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\Exception\InputException;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\View\Result\PageFactory;


/**
 * For MyInformation Controller
 */
class MyInformation extends Action
{

    protected $resultPageFactory;



    protected $coreRegistry;

    /**
     * Index constructor.
     * @param Context $context
     * @param PageFactory $resultPageFactory
     */
    public function __construct(
        Context $context,
        \Magento\Framework\Registry $coreRegistry,
        PageFactory $resultPageFactory,

    ) {
        $this->resultPageFactory = $resultPageFactory;

        parent::__construct($context);
    }

    /**
     * @return \Magento\Framework\App\ResponseInterface|\Magento\Framework\Controller\ResultInterface|\Magento\Framework\View\Result\Page
     */
    public function execute()
    {
        $this->initiateCustomer();
        $resultPage = $this->resultPageFactory->create();
        $resultPage->getConfig()->getTitle()->prepend(__('My Information'));
        return $resultPage;
    }



}// end class

create Block Block\Account\MyInformation.php

<?php

namespace NameSpace\Customer\Block\Account;


use Magento\Framework\View\Element\Template;

use Magento\Customer\Model\Session;


class MyInformation extends Template
{


    /**
     * @var \Magento\Framework\Registry
     */
    protected $registry;



    protected $customerSession;

    protected $url;

    /**
     * Cancel constructor.
     * @param \Magento\Framework\View\Element\Template\Context $context
     * @param array $data
     * @param \Magento\Framework\Registry $registry
     */
    public function __construct(
        Template\Context $context,
        array $data = [],

        Session $customerSession,

    ) {


        $this->customerSession = $customerSession;

        parent::__construct($context, $data);
    }

    /**
     * Retrieve current order model instance
     *
     * @return \Magento\Sales\Model\Order
     */
    public function getCustomer()
    {
        return $this->customerSession->getCustomer();
    }





}//end class

create routes.xml etc/frontend/routes.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="namespace_customer">
            <module name="Namespace_Customer"/>
        </route>
    </router>
</config>

Hope it will help you. Please vote us if you like our answer.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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