2016-07-04 9 views
1

yii2フレームワークを使用しているyii2で配列をgridviewに渡す方法

私は配列からコントローラにビューを渡しています。

public function actionProducts() 
{ 
$product = Yii::$app->httpclient->get('http://localhost/MWSProducts/src/MarketplaceWebServiceProducts/Samples/GetMatchingProductSample.php'); 

     $array1 = str_replace("ns2:","",$product); 
     $array=json_decode(json_encode(simplexml_load_string($array1)),true);   

     return $this->render('products',['array'=>$array]); 
} 

上記のコードでは、xmlを配列に変換しています。 $ arrayには配列があり、という製品という名前のビューに渡しています。今、私はグリッドビューのビューにその配列を表示したいと思っています。これはできません。

誰でも私がグリッドビューで配列を表示する方法を教えてください。製品ごとにその異なることから、あなたの答えを

おかげ..

が実際に製品のAPIからそれを取り出してアマゾンの製品アレイイムは、私たちがどの定義済みではidと、すべてのような属性を定義カントをありがとうございます。これは配列の様子です。

Array 
    (
    [GetMatchingProductResult] => Array 
    (
     [0] => Array 
      (
       [@attributes] => Array 
        (
         [ASIN] => 0886467918 
         [status] => Success 
        ) 

       [Product] => Array 
        (
         [Identifiers] => Array 
          (
           [MarketplaceASIN] => Array 
            (
             [MarketplaceId] => A21TJRUUN4KGV 
             [ASIN] => 0886467918 
            ) 

          ) 

         [AttributeSets] => Array 
          (
           [ItemAttributes] => Array 
            (
             [Author] => Kipling, Rudyard 
             [Binding] => Hardcover 
             [Edition] => Har/Cas 
             [Format] => Import 
             [Label] => Imprint unknown 
             [Languages] => Array 
              (
               [Language] => Array 
                (
                 [0] => Array 
                  (
                   [Name] => english 
                   [Type] => Published 
                  ) 

                 [1] => Array 
                  (
                   [Name] => english 
                   [Type] => Original Language 
                  ) 

                 [2] => Array 
                  (
                   [Name] => english 
                   [Type] => Unknown 
                  ) 

                ) 

              ) 

             [Manufacturer] => Imprint unknown 
             [PackageDimensions] => Array 
              (
               [Weight] => 1.74 
              ) 

             [ProductGroup] => Book 
             [ProductTypeName] => ABIS_BOOK 
             [PublicationDate] => 1988-05-02 
             [Publisher] => Imprint unknown 
             [SmallImage] => Array 
              (
               [URL] => http://ecx.images-amazon.com/images/I/412CsE6Mb8L._SL75_.jpg 
               [Height] => 75 
               [Width] => 50 
              ) 

             [Studio] => Imprint unknown 
             [Title] => Jungle Book ("Read Along") 
            ) 

          ) 

         [Relationships] => Array 
          (
          ) 

         [SalesRankings] => Array 
          (
           [SalesRank] => Array 
            (
             [0] => Array 
              (
               [ProductCategoryId] => book_display_on_website 
               [Rank] => 709468 
              ) 

             [1] => Array 
              (
               [ProductCategoryId] => 1318084031 
               [Rank] => 14260 
              ) 

             [2] => Array 
              (
               [ProductCategoryId] => 1318083031 
               [Rank] => 47016 
              ) 

            ) 

          ) 

        ) 

      ) 

答えて

3

配列にdataProviderのようなデータが含まれている場合。あなたは、例えば(yii2ガイドから)arrayDataProvider http://www.yiiframework.com/doc-2.0/yii-data-arraydataprovider.htmlを使用することができます。

$data = [ 
     ['id' => 1, 'name' => 'name 1', ...], 
     ['id' => 2, 'name' => 'name 2', ...], 
     ... 
     ['id' => 100, 'name' => 'name 100', ...], 
    ]; 

    $provider = new ArrayDataProvider([ 
     'allModels' => $data, 
     'pagination' => [ 
      'pageSize' => 10, 
     ], 
     'sort' => [ 
      'attributes' => ['id', 'name'], 
     ], 
    ]); 

public function actionProducts() 
    { 
    $product = Yii::$app->httpclient->get('http://localhost/MWSProducts/src/MarketplaceWebServiceProducts/Samples/GetMatchingProductSample.php'); 

      $array1 = str_replace("ns2:","",$product); 
      $array=json_decode(json_encode(simplexml_load_string($array1)),true);   



      $provider = new ArrayDataProvider([ 
       'allModels' => $array, 
       'pagination' => [ 
        'pageSize' => 10, 
       ], 
      ]); 

      return $this->render('products',['array'=>$array]); 
    } 

あなたのケースでのdataProvider http://www.yiiframework.com/doc-2.0/guide-output-data-providers.html

への簡単なガイドはどこ配列上記のサンプルを参照してください$ dataにはid、nameが含まれていて、arrayDataProviderがvar $配列にあり、gridviewにid、nameも指定していれば

<?= GridView::widget([ 
    'dataProvider' => $array, 
    'columns' => [ 
     ['class' => 'yii\grid\SerialColumn'], 
     'id', 
     'name', 
     ..... 

     ['class' => 'yii\grid\ActionColumn', 
     'contentOptions' => ['style' => 'width:84px; font-size:18px;']], 
    ], 
]); ?> 
+0

ここで私は今見たいと思いますか? –

+0

私はgriviewの提案を追加しました – scaisEdge

+0

ええ、私はグリッドビュー自体にしたいです、私たちはid、配列内の名前を持っていない場合はどうですか?すべての配列は異なる属性を持つためです。それから私はそれを渡す –

関連する問題