In my mobile number update module, logged user userId and mobilenumber set to .phtml hidden fields, but some times its not works properly ! please check my code


namespace {vendor}\{module}\Block\Account\Dashboard;

use Magento\Framework\View\Element\Template\Context;

class Updatemobile extends \Magento\Framework\View\Element\Template
    protected $_customersession;

    public function __construct(Context $context, \Magento\Customer\Model\Session $customerSession)
        $this->_customersession = $customerSession;

    public function getCustomerid()
        $customerId = 0;
        if ($this->_customersession->isLoggedIn()) {
            $customerId = $this->_customersession->getCustomer()->getId();
        return $customerId;

    public function getMobilenumber()
        $mobileNumber = 0;
        if ($this->_customersession->isLoggedIn()) {
            $mobileNumber = $this->_customersession->getCustomer()->getMobilenumber();
        return $mobileNumber;


<div class="update_mob">
    <div class="update_mob_text">
        <input type="text" value="<?php echo $block->getMobilenumber(); ?>" class="updatemobnumber"/>
        <input type="hidden" value="<?php echo $this->getUrl("mobilelogin/index/updatemobilenumber"); ?>" class="url" />
        <input type="hidden" value="<?php echo $block->getCustomerid();?>" class="userId" />
        <span><?php echo __("You will get all the sms on this number"); ?></span>
    <div class="update_mob_btn">
        <input type="button" value="Update Mobile Number" class="updatemobbtn action primary"/>
         <img class="sms-request-load" src="<?php echo $block->getViewFileUrl('images/loader-1.gif'); ?>" alt="Please Wait..." id="updatemobile_img"/>


namespace {Vendor}\{module}\Controller\Index;

use Magento\Framework\App\Action\Context;
use Magento\Framework\Controller\ResultFactory;
use Magento\Customer\Model\CustomerFactory;
use Magento\Customer\Model\Customer;
use Magento\Customer\Model\Data\Customer as CustomerData;
use Magento\Customer\Model\ResourceModel\Customer as CustomerResource;
use Magento\Customer\Model\ResourceModel\CustomerFactory as CustomerResourceFactory;

class Updatemobilenumber extends \Magento\Framework\App\Action\Action
    protected $_resultPageFactory;
    protected $customerFactory;
    protected $customerData;
    protected $customer;
    protected $customerResourceFactory;
    protected $customerResource;
    public function __construct(
        Context $context,
        CustomerFactory $customerFactory,
        Customer $customer,
        CustomerData $customerData,
        CustomerResource $customerResource,
        CustomerResourceFactory $customerResourceFactory,
         $data = array()

        $this->customerFactory  = $customerFactory;
        $this->customer = $customer;
        $this->customerData = $customerData;
        $this->customerResourceFactory = $customerResourceFactory;
        $this->customerResource = $customerResource;

    public function execute()
        $mobile = (string)$this->getRequest()->get('mobile');
        $customerId = (string)$this->getRequest()->get('userId');
        $this->customerData = $this->customer->getDataModel();
        $this->customerData->setCustomAttribute('mobilenumber', $mobile);
        $this->customerResource = $this->customerResourceFactory->create();
        if ($mobile != "") {
            $this->customerResource->saveAttribute($this->customer, 'mobilenumber');
        $this->messageManager->addSuccess("Mobile Number Update successfully");

        $data = 1;     
        $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON);
        return $resultJson;

  • try removing $mobileNumber = 0; and $customerId = 0;
    – Mohit Rane
    Commented Jul 19, 2019 at 6:57
  • Can you please upload code of your updatemobilenumber controller? Commented Jul 19, 2019 at 6:58
  • try \Magento\Customer\Model\SessionFactory instead of \Magento\Customer\Model\Session I have Done same thing Yesterday
    – Waqar Ali
    Commented Jul 19, 2019 at 7:00
  • @ Rohan Hapani please check updated Question Commented Jul 19, 2019 at 7:02
  • It seems like your first hidden field value always display 1. Commented Jul 19, 2019 at 7:03

1 Answer 1


You're returning the value of $customerId and $mobileNumber outside of

if ($this->_customersession->isLoggedIn()) {}

that's why it's returning value 0 since you're initializing with 0 . Update this code in


    public function getCustomerid()
        if ($this->_customersession->isLoggedIn()) {
             return $this->_customersession->getCustomer()->getId();
        return false;

    public function getMobilenumber()
        if ($this->_customersession->isLoggedIn()) {
             return $this->_customersession->getCustomer()->getMobilenumber();
        return false;


The issue is in $_customersession property

Underscore isn't needed in your $_customersession property you can also try to define property without underscore, it's not needed.

Change it to




If you are facing the cache issue, you can use in your layout file


Hope it Helps.

  • hi @Mohit Rane , thank you for your response , but its did not works for me i think my logged session values not correctly fetch Commented Jul 19, 2019 at 8:36
  • can you print this $this->getRequest()->getParams(); Or $this->getRequest()->getPostValue(); see what it prints
    – Mohit Rane
    Commented Jul 19, 2019 at 8:40
  • where ? i keep this code Commented Jul 19, 2019 at 8:48
  • in your controller Updatemobilenumber.php file
    – Mohit Rane
    Commented Jul 19, 2019 at 8:49
  • /index/updatemobilenumber/?mobile=123456798&userId=0&_=1563526335045 500 (Internal Server Error) it shows when i click update mobile number Commented Jul 19, 2019 at 8:53

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.