2016-11-07 2 views
9

Я разрабатываю подмодуль в панели администратора. В первой странице отображается список пользователей (Referrers/Parent users) и их общая комиссия. На вкладке «Действия» есть раскрывающийся список, по клику которого открываются некоторые сетки. Как и в случае с ним, я хочу добавить еще один вариант, по щелчку которого должна быть страница, показывающая, кто из них (дочерних пользователей) у этого пользователя Referrer/Parent, и сколько комиссионных получает пользователь Referrer/Parent для реферала/дочернего пользователя.Создание сетки в панели администратора при щелчке раскрывающегося списка magento 1.7.0.2

Для бывших: A (Родитель пользователем) - B, C (дочерние пользователи) зарегистрировалась ссылкой А. Таким образом, с B, A получил 20 $ комиссии и от С, А получил 20 $ комиссия , (эти сведения о том, кто сослал кого и сколько комиссионных там хранится в таблице), общая сумма 40 $ на предыдущей странице.

In this image you can see from this drop-down I need to load next grid

ошибка, которую я клоню IS-

Фатальная ошибка: Uncaught Ошибка: Вызов функции члена setSaveParametersInSession() на логическое значение в E: \ XAMPP \ HTDOCS \ peoplesoilnew \ приложение \ code \ core \ Mage \ Adminhtml \ Block \ Widget \ Grid \ Container.php: 66 Трассировка стека: # 0 E: \ xampp \ htdocs \ peopleoilnew \ app \ code \ core \ Mage \ Core \ Block \ Abstract.php (\ 238): Mage_Adminhtml_Block_Widget_Grid_Container -> _ prepareLayout() # 1 E: \ xampp \ htdocs \ peopleoilnew \ app \ code \ core \ Mage \ Core \ Model \ Layout.php (456): Mage_Core_Block_Abstract-> setLayout (объект (Mage_Core_Model_Layout)) # 2 E: \ xampp \ htdocs \ peopleoilnew \ app \ code \ lo cal \ Mj \ Друзья \ контроллеры \ Adminhtml \ FriendsController.php (60): Mage_Core_Model_Layout-> createBlock ('friends/adminht ...') # 3 E: \ xampp \ htdocs \ peopleoilnew \ app \ code \ core \ Mage \ Core \ Controller \ Varien \ Action.php (419): Mj_Friends_Adminhtml_FriendsController-> friendscommissionAction() # 4 E: \ xampp \ htdocs \ peopleoilnew \ app \ code \ core \ Mage \ Core \ Controller \ Varien \ Router \ Standard.php (250): Mage_Core_Controller_Varien_Action-> dispatch ('friendscommissi ...') # 5 E: \ xampp \ htdocs \ peopleoilnew \ app \ code \ core \ Ma в E: \ xampp \ htdocs \ peopleoilnew \ app \ code \ core \ Mage \ Adminhtml \ Block \ Widget \ Сетка \ Container.php на линии 66

код files-

код откуда добавляется опция для выпадающего списка -

$this->addColumn('action', 
     array(
      'header' => Mage::helper('customer')->__('Action'), 
      'width'  => '100', 
      'type'  => 'action', 
      'getter' => 'getId', 
      'actions' => array(
       array(
        'caption' => Mage::helper('friends')->__('Make Payment'), 
        'url'  => array('base'=> '*/*/payment'), 
        'field'  => 'friendskey_id' 
       ), 
       array(
        'caption' => Mage::helper('friends')->__('View Referred Friend List'), 
        'url'  => array('base'=> '*/*/friendslist'), 
        'field'  => 'friendskey_id' 
       ), 
       array(
        'caption' => Mage::helper('friends')->__('Distribution of Commission'), 
        'url'  => array('base'=> '*/*/friendscommission'), 
        'field'  => 'friendskey_id' 
       ) 

приложение \ код \ Local \ Mj \ Друзья \ и т.д. \ config.xml -

 <friends_mysql4> 
      <class>Mj_Friends_Model_Mysql4</class> 
      <entities> 
       <friends> 
        <table>friends</table> 
       </friends> 
       <commission> 
        <table>friends_commission</table> 
       </commission> 
       <memberkey> 
        <table>friendskey</table> 
       </memberkey> 
       <friendscommission> 
        <table>friends_commission</table> 
       </friendscommission> 
      </entities> 
     </friends_mysql4>  

приложение \ код \ Local \ Mj \ Друзья \ Block \ Adminhtml \ Friendscommission \ Grid.php -

<?php 
class Mj_Friends_Block_Adminhtml_Friendscommission_Grid extends   Mage_Adminhtml_Block_Widget_Grid 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    $this->setId('friends_commission'); 
    $this->setDefaultSort('commission_id'); 
    $this->setDefaultDir('ASC'); 
    $this->setSaveParametersInSession(false); 
    $this->_prepareCollection();  
    } 

    protected function _prepareCollection() 
    { 
    // get the member id using friendskey_id 
    /*$friendsId  = $this->getRequest()->getParam('friendskey_id'); 
    $friendsModel = Mage::getModel('friends/memberkey')->load($friendsId); 
    $memberId = $friendsModel->getMemberId();*/ 

    $collection = Mage::getModel('friends/friends_commission')->getCollection(); 

// $collection->addFieldToFilter('member_id', $memberId); 
    $this->setCollection($collection);  

    return parent::_prepareCollection(); 
} 

protected function _prepareColumns() 
{ 

    /* 
    $this->addColumn('friends_id', array(
     'header' => Mage::helper('friends')->__('ID'), 
     'align'  =>'right', 
     'width'  => '50px', 
     'index'  => 'friends_id', 
    )); 
    */ 


    $this->addColumn('user_email', array(
     'header' => Mage::helper('friends')->__('User Email'), 
     'align'  => 'left', 
     'width'  => '120px',    
     'default' => '--', 
     'index'  => 'user_email', 
    )); 

    $this->addColumn('status', array(

     'header' => Mage::helper('friends')->__('Status'), 
     'align'  => 'left', 
     'width'  => '80px', 
     'index'  => 'status', 
     'type'  => 'options', 
     'options' => array(
      'Active' => 'Active', 
      'Inactive' => 'Inactive', 
     ), 
    )); 

    return parent::_prepareColumns(); 
    } 



} 

приложение \ код \ Local \ Mj \ Друзья \ Block \ Adminhtml \ Friendscommission.php -

<?php 

class Mj_Friends_Block_Adminhtml_Friendscommission extends Mage_Adminhtml_Block_Widget_Grid_Container 
{ 
    public function __construct() 
    { 
    $this->_controller = 'adminhtml_friendscommission'; 
    $this->_blockGroup = 'friends'; 
    $this->_headerText = Mage::helper('friends')->__('Friends Commission'); 
    //$this->_addButtonLabel = Mage::helper('friends')->__('Add Item'); 
    parent::__construct(); 
    $this->_removeButton('add'); 
    /* 
    $this->_addButton('back'); 
    $this->_addButton('back_button_id', array(
     'label'  => Mage::helper('friends')->__('Some action'), 
     'onclick' => 'jsfunction(this.id)', 
     'class'  => 'go' 
    ), 0, 100, 'header', 'header'); 
    */ 

    } 
} 

** приложение \ код \ Local \ Mj \ Друзья \ Model \ Friendscommission.php **

<?php 

class Mj_Friends_Model_Friendscommission extends Mage_Core_Model_Abstract 
{ 
    public function _construct() 
    { 
    parent::_construct(); 
    $this->_init('friends/friends_commission'); 
    } 
} 

От контроллера действия для этого модуля называется, приложение \ код \ местные \ Mj \ Друзья \ контроллеры \ Adminhtml \ FriendsController.PHP -

 <?php 

    class Mj_Friends_Adminhtml_FriendsController extends Mage_Adminhtml_Controller_Action 
    { 

    protected function _initAction() 
    { 
    $this->loadLayout() 
     ->_setActiveMenu('friends/items') 
     ->_addBreadcrumb(Mage::helper('adminhtml')->__('Items Manager'), Mage::helper('adminhtml')->__('Item Manager')); 
    return $this; 
    } 

    public function indexAction() { 
    $this->_initAction();  
    $this->_addContent($this->getLayout()->createBlock('friends/adminhtml_friends')); 
    $this->renderLayout(); 
    } 

public function editAction() 
{ 
    $friendsId  = $this->getRequest()->getParam('id'); 
    $friendsModel = Mage::getModel('friends/friends')->load($friendsId); 

    if ($friendsModel->getId() || $friendsId == 0) { 

     Mage::register('friends_data', $friendsModel); 

     $this->loadLayout(); 
     $this->_setActiveMenu('friends/items'); 

     $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager')); 
     $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News')); 

     $this->getLayout()->getBlock('head')->setCanLoadExtJs(true); 

     $this->_addContent($this->getLayout()->createBlock('friends/adminhtml_friends_edit')) 
      ->_addLeft($this->getLayout()->createBlock('friends/adminhtml_friends_edit_tabs')); 

     $this->renderLayout(); 
    } else { 
     Mage::getSingleton('adminhtml/session')->addError(Mage::helper('friends')->__('Item does not exist')); 
     $this->_redirect('*/*/'); 
    } 
} 

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

    public function friendslistAction() { 
    $this->_initAction();  
    $this->_addContent($this->getLayout()->createBlock('friends/adminhtml_friendslist')); 
    $this->renderLayout(); 
} 


    public function friendscommissionAction() { 
    $this->_initAction(); 
    $this->_addContent($this->getLayout()->createBlock('friends/adminhtml_friendscommission')); 
    $this->renderLayout(); 
    } 

    public function paymentAction() 
    { 
    $friendsId  = $this->getRequest()->getParam('friendskey_id'); 
    $friendsModel = Mage::getModel('friends/memberkey')->load($friendsId); 

    if ($friendsModel->getFriendskeyId() || $friendsId > 0) { 

     Mage::register('friends_data', $friendsModel); 

     $this->loadLayout(); 
     $this->_setActiveMenu('friends/items'); 

     /* $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager')); 
     $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));*/ 

     $this->getLayout()->getBlock('head')->setCanLoadExtJs(true); 

     $this->_addContent($this->getLayout()->createBlock('friends/adminhtml_friends_payment')) 
      ->_addLeft($this->getLayout()->createBlock('friends/adminhtml_friends_payment_tabs')); 

     $this->renderLayout(); 
    } else { 
     Mage::getSingleton('adminhtml/session')->addError(Mage::helper('friends')->__('Item does not exist')); 
     $this->_redirect('*/*/'); 
    } 
} 

public function saveAction() 
{ 

    if ($this->getRequest()->getPost()) { 
     try { 
      $postData = $this->getRequest()->getPost(); 
      //print_r($postData); die; 
      if($postData['amount_hidden']) { 
       $resource = Mage::getSingleton('core/resource'); 
       $readConnection = $resource->getConnection('core_write'); 

       $updateSql = "UPDATE friends_standard_payamount SET standard_amount = '".$postData['standard_payment_amount']."', standard_commission = '".$postData['standard_commission']."'"; 
       $readConnection->query($updateSql); 

       Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Minimum referred payment amount updated successfully.')); 
       $this->_redirect('new', array('friendskey_id' => $this->getRequest()->getParam('friendskey_id'))); 
       return; 
      } else { 

           $resource = Mage::getSingleton('core/resource'); 
       $readConnection = $resource->getConnection('core_write'); 

       $updateSql = "UPDATE friends_standard_payamount SET standard_commission = '".$postData['commission_amount']."'"; 
       $readConnection->query($updateSql); 

       //get the commission amount 
       $friendsModel = Mage::getModel('friends/friends'); 
       $commission_amount = $postData['commission_amount']; 
       $friendskey_id = $postData['friendskey_id']; 

       //get the memeber id. 
       $friendsModel = Mage::getModel('friends/memberkey')->load($friendskey_id); 
       $memberId = $friendsModel->getMemberId();    

       //get the member paypal business email address. 
       $customerData = Mage::getModel('customer/customer')->load($memberId)->getData();  
       //$customerData['paypalemail']; 
       if(!empty($customerData['paypalemail'])) { 
         //get the paypal config settings. 
         $standard = Mage::getModel('paypal/standard'); 
         $form = new Varien_Data_Form();  

         $form->setAction($standard->getConfig()->getPaypalUrl()) 
           ->setId('paypal_standard_checkout') 
           ->setName('paypal_standard_checkout') 
           ->setMethod('POST') 
           ->setUseContainer(true); 

         /* @var $api Mage_Paypal_Model_Api_Standard */ 
         $api = Mage::getModel('paypal/api_standard')->setConfigObject($this->getConfig()); 
        //$orderIncrementId = 0 ; 
        $api->setOrderId($orderIncrementId) 
          ->setCurrencyCode(Mage::app()->getStore()->getCurrentCurrencyCode()) 
          //->setPaymentAction() 
          //->setOrder($order) 
          ->setNotifyUrl(Mage::getUrl('paypal/ipn/')) 
          ->setReturnUrl(Mage::getUrl('paypal/standard/success')) 
          ->setCancelUrl(Mage::getUrl('paypal/standard/cancel')); 

         //get and set owner address. 
         $address = array(); 
         $api->setAddress($address); 
         $api->setLocale($api->getLocaleCode()); 
         $result = $api->getStandardCheckoutRequest(); 

         foreach ($result as $field=>$value) { 
          if($field == "business") { 
           //set the paypal business email address 
           $form->addField($field, 'hidden', array('name'=>$field, 'value'=>$customerData['paypalemail'])); 
          } else if($field == "return") { 
           $form->addField($field, 'hidden', array('name'=>$field, 'value'=>$this->getUrl('*/*/success', array()))); 
          } else if($field == "cancel_return") { 
           $form->addField($field, 'hidden', array('name'=>$field, 'value'=>$this->getUrl('*/*/cancel', array()))); 
          } else { 
           $form->addField($field, 'hidden', array('name'=>$field, 'value'=>$value)); 
          } 
         }  

         $form->addField('amount', 'hidden', array('name'=>'amount', 'value'=>$commission_amount)); 
         $form->addField('paymentaction', 'hidden', array('name'=>'paymentaction', 'value'=>'sale')); 
         $form->addField('item_name', 'hidden', array('name'=>'item_name', 'value'=>'Commission Amount')); 

         //$form->addField('business', 'hidden', array('name'=>'business', 'value'=>$paypalBusinessIdValue)); 

         $idSuffix = Mage::helper('core')->uniqHash(); 
         $submitButton = new Varien_Data_Form_Element_Submit(array(
          'value' => $this->__('Click here if you are not redirected within 10 seconds...'), 
         )); 
         $id = "submit_to_paypal_button_{$idSuffix}"; 
         $submitButton->setId($id); 
         $form->addElement($submitButton); 
         $html = '<html><body>'; 
         $html.= $this->__('You will be redirected to the PayPal website in a few seconds.'); 
         $html.= $form->toHtml(); 
         $html.= '<script type="text/javascript">document.getElementById("paypal_standard_checkout").submit();</script>'; 
         $html.= '</body></html>'; 
         echo $html; 
         exit; 
        }else { 
         Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Member does not have the PayPal Email Address. Thus, unable proceed to make the payment.')); 
         Mage::getSingleton('adminhtml/session')->setFriendsData($this->getRequest()->getPost()); 
         $this->_redirect('*/*/payment', array('friendskey_id' => $this->getRequest()->getParam('friendskey_id'))); 
         return; 
        } 
       } 
      /* 
       $friendsModel->setId($this->getRequest()->getParam('id')) 
        ->setTitle($postData['user_email']) 
        ->setContent($postData['content']) 
        ->setStatus($postData['status']) 
        ->save(); 

       Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully saved')); 
       Mage::getSingleton('adminhtml/session')->setFriendsData(false); 
       */ 
      // $this->_redirect('*/*/'); 
      // return; 

     } catch (Exception $e) { 
      Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); 
      Mage::getSingleton('adminhtml/session')->setFriendsData($this->getRequest()->getPost()); 
      $this->_redirect('*/*/payment', array('friendskey_id' => $this->getRequest()->getParam('friendskey_id'))); 
      return; 
     } 
    } 
    $this->_redirect('*/*/'); 
} 

public function successAction() { 
    $this->loadLayout(); 
    $this->_setActiveMenu('friends/items'); 
    $this->getLayout()->getBlock('head')->setCanLoadExtJs(true); 
    $this->renderLayout();  
    Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Payment has been done successfully.'));  
} 

public function cancelAction() { 
    $this->loadLayout(); 
    $this->_setActiveMenu('friends/items'); 
    $this->getLayout()->getBlock('head')->setCanLoadExtJs(true); 
    $this->renderLayout();  
    Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Payment has been cancelled successfully.'));  
} 

public function formAction(){ 
    $this->loadLayout(); 
    $this->getResponse()->setBody(
     $this->getLayout()->createBlock('friends/adminhtml_friends_payment_tab_amount')->toHtml() 
    ); 
} 

/** 
* Config instance getter 
* @return Mage_Paypal_Model_Config 
*/ 
public function getConfig() 
{ 
    if (null === $this->_config) { 

     $params = array($this->_code); 
     if ($store = Mage::app()->getStore()) { 
      $params[] = is_object($store) ? $store->getId() : $store; 
     } 
     $this->_config = Mage::getModel('paypal/config', $params); 
    } 
    return $this->_config; 
} 

public function deleteAction() 
{ 
    if($this->getRequest()->getParam('id') > 0) { 
     try { 
      $friendsModel = Mage::getModel('friends/friends'); 

      $friendsModel->setId($this->getRequest()->getParam('id')) 
       ->delete(); 

      Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted')); 
      $this->_redirect('*/*/'); 
     } catch (Exception $e) { 
      Mage::getSingleton('adminhtml/session')->addError($e->getMessage()); 
      $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id'))); 
     } 
    } 
    $this->_redirect('*/*/'); 
} 
/** 
* Product grid for AJAX request. 
* Sort and filter result for example. 
*/ 
public function gridAction() 
{ 
    $this->loadLayout(); 
    $this->getResponse()->setBody(
      $this->getLayout()->createBlock('friends/adminhtml_friends_grid')->toHtml() 
    ); 
} 

}

В таблице для извлечения данных из -

enter image description here

+0

вы можете попробовать один раз: http://magento.stackexchange.com/questions/43343/magento-fatal-error-setsaveparametersinsession-on-a-non-object – fresher

ответ

0

Похоже, вам не хватает контроллера "adminhtml_friendscommission"

$this->_controller = 'adminhtml_friendscommission'; 

Пожалуйста, создайте вышеуказанный контроллер, и он устранит проблему.

Или, если вы не хотите, что контроллер friendscommission и если вам нужно использовать друг контроллер изменить

$this->_controller = 'adminhtml_friendscommission'; 

в

$this->_controller = 'adminhtml_friends'; 

в

Mj_Friends_Block_Adminhtml_Friendscommission::__construct method