0

プログラムで Magento 属性を作成し、CSV からデータを取得するスクリプトを作成しています。CSV からデータを取得する実際のループが正しいかどうかわかりません - ロジックに関する専門家のガイダンスを期待していましたか?

    <?php 
$fh = fopen("attributes.csv", "r");
$i = 0;
while (($l = fgetcsv($fh, 1024, ",")) !== FALSE) {

    $i++;
    if($i == 1) continue; //ignoring the headers, so skip row 0
    $data['label'] = trim($l[2]);
    $data['input'] = trim($l[3]);
    $data['type'] = trim($l[2]);

    //Create the attribute

    $data=array(
'type'=>$data['type'],
'input'=>'text',
'label'=>$data['label'],
'global'=>Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'is_required'=>'0',
'is_comparable'=>'0',
'is_searchable'=>'0',
'is_unique'=>'1',
'is_configurable'=>'1',
'use_defined'=>'1'
);

$model->addAttribute('catalog_product','test_attribute',$data);

}   

?>

私は基本的に、CSVから属性データを取得し、CSVの各行に対してコードを実行して作成したいだけです(CSVで指定されたラベルと名前を使用して-ループで明らかな何かが欠けていると思いますか? (私がしていることを本当に学んでいます!)

4

1 に答える 1

1

CSV から値を挿入した後、各ループで配列をリセットする$dataと、CSV コンテンツが失われます。これを試して

$fh = fopen("attributes.csv", "r");
$i = 0;
$attributes=array(); //!!
while (($l = fgetcsv($fh, 1024, ",")) !== FALSE) {

    $i++;
    if($i == 1) continue; //ignoring the headers, so skip row 0

    $data=array();

    $data['label'] = trim($l[2]);
    $data['input'] = trim($l[3]);
    $data['type'] = trim($l[2]);

    $data['global']=Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL;
    $data['is_required']='0';
    $data['is_comparable']='0';
    $data['is_searchable']='0';
    $data['is_unique']='1';
    $data['is_configurable']='1';
    $data['use_defined']='1';

    //insert $data to the attributes array
    $attributes[]=$data;
    //or
    $model->addAttribute('catalog_product','test_attribute',$data);
}   
于 2012-10-15T10:02:01.027 に答える