2016-03-30 9 views
3

私は過去何日もこのことをやろうとしています。論理をあまり得ていない。私は何をしているのですか?Magentoで関連製品のようなグリッドを実装する方法は?

Magento 1.9.xの内線番号の内線番号を作成します。私はビデオの部分を完了しました。私はそれらを特定の製品に割り当てる方法に固執しています。 Related、Upsell、Cross Sellといった製品の編集ページにグリッドを表示したい。このグリッドには、私のカスタムモデルのビデオ情報が入力される必要があります。

私は多くの研究を行い、特定の製品に他の製品を割り当てる方法を説明する記事を見つけることができました。私はグリッドシリアライザの作業に関する記事も読んでいます。しかし、私のカスタムモデル(テーブル)エンティティを特定の製品に割り当てることについての記事は述べていません。私は関連商品のロジックを調べようとしましたが、私はそれをかなり理解していません。

ここまで行っています。私はビデオをグリッドに表示しています。

enter image description here

しかし、私はそれらを保存することはできませんよ。また、既存の製品を編集しようとしても機能しません。これは私が論理ではっきりしていないからです。誰かがこれについていくつかの光を共有することができますか?どんな助けにも感謝します。ありがとう!グリッド・シリアライザで

答えて

0

は、次のような選択した動画の何かのためにパラメータ名を選択している:いない場合は

<action method="initSerializerBlock"> 
        <grid_block_name>[[videos grid class]]</grid_block_name> 
        <data_callback>getSelectedProducts</data_callback> 
        <hidden_input_name>selected_videos</hidden_input_name> 
        <reload_param_name>selected</reload_param_name> 
       </action> 

、それを追加します。 選択したビデオを保存時に現在の製品に関連付けるためにオブザーバーを作成する必要があります。これをadminhtmlのイベントcatalog_product_prepare_saveに追加できます。

$selectedVideos = Mage::app()->getRequest()->getPost('selected_videos', []); 
$product->setData('custom_attribute_for_videos', 
        Mage::helper('adminhtml/js')->decodeGridSerializedInput($selectedVideos) 
       ); 

custom_attribute_for_videosはあなたが製品に動画を関連付けるために使用しようとしている(配列型の)製品属性のコードです: と呼ばれる方法のような何かを行う必要があります。それ以外の場合は、必要に応じて、ジョイントテーブル(products_videos)を作成し、オブザーバ内のデータ(ビデオおよび製品ID)をリレーションモデルに設定して保存することで、関係を保存することができます。

関連する問題