2015-12-27 108 views
1

當我嘗試創建XML/Soap用戶時,顯示此錯誤,我單擊添加用戶並出現此錯誤。致命錯誤:調用布爾型上的成員函數getId()

致命錯誤:調用成員函數getId()布爾值在/var/www/vhosts/domain.com/httpdocs/app/code/core/Mage/Adminhtml/controllers/Api/UserController.php在線74

這是我UserController.php

<?php 

class Mage_Adminhtml_Api_UserController extends Mage_Adminhtml_Controller_Action 
{ 
    public function indexAction() 
    { 
     $this->_title($this->__('System')) 
      ->_title($this->__('Web Services')) 
      ->_title($this->__('Users')); 

     $this->_initAction() 
      ->_addContent($this->getLayout()->createBlock('adminhtml/api_user')) 
      ->renderLayout(); 
    } 

    protected function _initAction() 
    { 
     $this->loadLayout() 
      ->_setActiveMenu('system/services/users') 
      ->_addBreadcrumb($this->__('Web Services'), $this->__('Web Services')) 
      ->_addBreadcrumb($this->__('Permissions'), $this->__('Permissions')) 
      ->_addBreadcrumb($this->__('Users'), $this->__('Users')); 
     return $this; 
    } 

    public function newAction() 
    { 
     $this->_forward('edit'); 
    } 

    public function editAction() 
    { 
     $this->_title($this->__('System')) 
      ->_title($this->__('Web Services')) 
      ->_title($this->__('Users')); 

     $id = $this->getRequest()->getParam('user_id'); 
     $model = Mage::getModel('api/user'); 
     if ($id) { 
      $model->load($id); 
      if (!$model->getId()) { 
       Mage::getSingleton('adminhtml/session')->addError($this->__('This user no longer exists.')); 
       $this->_redirect('*/*/'); 
       return; 
      } 
     } 
     $this->_title($model->getId() ? $model->getName() : $this->__('New User')); 
     // Restore previously entered form data from session 
     $data = Mage::getSingleton('adminhtml/session')->getUserData(true); 
     if (!empty($data)) { 
      $model->setData($data); 
     } 
     Mage::register('api_user', $model); 
     $this->_initAction() 
      ->_addBreadcrumb($id ? $this->__('Edit User') : $this->__('New User'), 
       $id ? $this->__('Edit User') : $this->__('New User')) 
      ->_addContent($this->getLayout()->createBlock('adminhtml/api_user_edit') - >setData('action', 
      $this->getUrl('*/api_user/save'))) 
       ->_addLeft($this->getLayout()->createBlock('adminhtml/api_user_edit_tabs')); 
      $this->_addJs($this->getLayout()->createBlock('adminhtml/template')->setTemplate('api/user_roles_grid_js.phtml')); 
      $this->renderLayout(); 
    } 

    public function saveAction() 
    { 
     if ($data = $this->getRequest()->getPost()) { 
      $id = $this->getRequest()->getPost('user_id', false); 
      $model = Mage::getModel('api/user')->load($id); 
      if (!$model->getId() && $id) { 
       Mage::getSingleton('adminhtml/session')->addError($this->__('This user no longer exists.')); 
       $this->_redirect('*/*/'); 
       return; 
      } 
      $model->setData($data); 
      try { 
       $model->save(); 
       if ($uRoles = $this->getRequest()->getParam('roles', false)) { 
        /*parse_str($uRoles, $uRoles); 
        $uRoles = array_keys($uRoles);*/ 
        if (1 == sizeof($uRoles)) { 
         $model->setRoleIds($uRoles) 
          ->setRoleUserId($model->getUserId()) 
          ->saveRelations(); 
        } else { 
         if (sizeof($uRoles) > 1) { 
          //@FIXME: stupid fix of previous multi-roles logic. 
          //@TODO: make proper DB upgrade in the future revisions. 
          $rs = array(); 
          $rs[0] = $uRoles[0]; 
          $model->setRoleIds($rs)->setRoleUserId($model->getUserId()) - >saveRelations(); 
         } 
        } 
       } 
       Mage::getSingleton('adminhtml/session')->addSuccess($this->__('The user has been saved.')); 
       Mage::getSingleton('adminhtml/session')->setUserData(false); 
       $this->_redirect('*/*/edit', array('user_id' => $model->getUserId())); 
       return; 
      } catch (Exception $e) { 
       Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); 
       Mage::getSingleton('adminhtml/session')->setUserData($data); 
       $this->_redirect('*/*/edit', array('user_id' => $model->getUserId())); 
       return; 
      } 
     } 
     $this->_redirect('*/*/'); 
    } 

    public function deleteAction() 
    { 
     if ($id = $this->getRequest()->getParam('user_id')) { 
      try { 
       $model = Mage::getModel('api/user')->load($id); 
       $model->delete(); 
       Mage::getSingleton('adminhtml/session')->addSuccess($this->__('The user has been deleted.')); 
       $this->_redirect('*/*/'); 
       return; 
      } catch (Exception $e) { 
       Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); 
       $this->_redirect('*/*/edit', array('user_id' => $this->getRequest() - >getParam('user_id'))); 
       return; 
      } 
     } 
     Mage::getSingleton('adminhtml/session')->addError($this->__('Unable to find a user to delete.')); 
     $this->_redirect('*/*/'); 
    } 

    public function rolesGridAction() 
    { 
     $id = $this->getRequest()->getParam('user_id'); 
     $model = Mage::getModel('api/user'); 
     if ($id) { 
      $model->load($id); 
     } 
     Mage::register('api_user', $model); 
     $this->getResponse()->setBody($this->getLayout()->createBlock('adminhtml/api_user_edit_tab_roles')->toHtml()); 
    } 

    public function roleGridAction() 
    { 
     $this->getResponse() 
      ->setBody($this->getLayout() 
       ->createBlock('adminhtml/api_user_grid') 
       ->toHtml() 
      ); 
    } 

    protected function _isAllowed() 
    { 
     return Mage::getSingleton('admin/session')->isAllowed('system/api/users'); 
    } 
} 

,當我啓用了錯誤報告,我看到這個錯誤日誌

mod_fcgid: stderr: PHP Fatal error: Call to a member function getId() on boolean in /var/www/vhosts/domain.com/httpdocs/app/code/core/Mage/Adminhtml/controllers/Api/UserController.php on line 74, referer: http://www.domain.com/index.php/admin/api_user/index/key/b2a855c2e5d82b8a3ba010f07f3883af/ 

,我看到這在我的瀏覽器,當我點擊添加新用戶在SOAP/XML-RPC用戶中。

Fatal error: Call to a member function getId() on boolean in /var/www/vhosts/domain.com/httpdocs/app/code/core/Mage/Adminhtml/controllers/Api/UserController.php on line 74 

回答

1

查找到什麼在此背景下的load()函數返回:

$model = Mage::getModel('api/user')->load($id); 

早些時候在你的腳本,你做一個:

$model = Mage::getModel('api/user'); 

接着是

$model->load($id); 
我想你在哪裏:
$model = Mage::getModel('api/user')->load($id); 

你也需要做:

$model = Mage::getModel('api/user'); 
$model->load($id); 

我不能肯定地說,沒有你提供更多的代碼,但我猜想,load()函數「負荷」對應的$ id的通過設置某些類變量將值賦予對象並返回True或False;它不會返回加載的對象本身。

+0

這沒有幫助,上面的腳本是Magento源代碼,我沒有寫我自己。 –

相關問題