0

私はMagentoを初めて使用します。顧客グリッドに表示される最終ログイン値を追加しようとしています。null 値を返します。他のチュートリアルを読みましたが、あまり役に立ちません。Magento のバージョンは 1.7 です。これが私のコードです:

        $customer = Mage::getSingleton('customer/session')->getCustomer();  
        $logCustomer = Mage::getModel('log/customer')->load($customer  ->getId());  
        $lastVisited = $logCustomer->getLoginAt();

    $this->addColumn('$lastVisited', array(
        'header'    => Mage::helper('customer')->__('Last Login'),
        'type'      => 'datetime',
        'align'     => 'center',
        'index'     => '$lastVisited',
        'gmtoffset' => true
    ));
4

2 に答える 2

1

Magento はログイン時刻を次の表に保存します。 log_customer ただし、このデータは定期的に消去されます (参照: Mage_Log_Model_Resource_Log::_cleanCustomersMagento cron によってトリガーされる)。

タスクにアプローチするにはさまざまな方法があります。

1) 非永続的 - 最近のデータを確認したいだけです (log_customer が定期的に消去されることは無視できます)

この場合log_customer、Manage Customers Grid からのデータを信頼して表示することができます。Mage_Adminhtml_Block_Customer_Grid を拡張し、_prepareCollection に以下を追加します。

$collection->getSelect()->columns(array('last_login_at' => new Zend_Db_Expr ("(SELECT login_at
FROM  `log_customer` 
WHERE customer_id =e.entity_id
ORDER BY log_id DESC 
LIMIT 1)")));

前:$this->setCollection($collection);

注: 適切な Magento 関数を使用して log_customer テーブル名を取得します。私のクエリは単なる例です

2) 永続的 - 常にデータを表示したい

  1. last_login_at (datetime)という顧客エンティティに新しい属性を追加します。
  2. イベントにオブザーバーを追加して、custom_loginこの属性を更新します。
  3. addColumnグリッドで関数を使用して、この新しい属性を表示します。

@ユーザー1414056

あなたのコードについて:

  • bixe は、'$lastVisited'(これは、php プログラミングの経験が不足していることを示しているだけです)
  • addColumn は 1 回しか呼び出されないため、(一般に) プログラミングも初めてのようです... コードがどのように意味を持つと思いますか?

Zend Framework と OOP プログラミング全般について理解を深めると、Magento を実際に使用して作業を行うことができるようになります。

于 2012-10-18T15:15:32.023 に答える
-1

あなたの '$lastVisited' は機能しません: PHP 変数は、二重引用符で囲まれている場合にのみ文字列で評価されます。

編集:

magento の列システムは、グリッドにリンクされたコレクションで使用可能な場合にのみ値を表示します。

グリッド コレクションに表示するログ情報を追加する必要があります。例として、Mage_Adminhtml_Block_Customer_Online_Grid::_prepareCollection()

完了したら、次のように列を追加します。

$this->addColumn('login_at', array(
        'header'    => Mage::helper('customer')->__('Last Login'),
        'type'      => 'datetime',
        'align'     => 'center',
        'index'     => 'login_at',
        'gmtoffset' => true
    ));
于 2012-10-17T12:18:37.147 に答える