0

OpenCart を使用するプロジェクトに取り組み始めました。新しいオプションを追加しようとすると、奇妙な問題が発生します。

バックエンドで 2 つのテキスト オプションを作成し、それらを製品に割り当てます。そして、それは機能します。問題は、オプションがフロントエンドに正しくロードされていないことです。それらは正常に表示されますが、存在するはずのすべての変数 (具体的には product_option_id) を出力すると、それらは NULL になります。以前は問題に気づきませんでしたが、コードを変更するには product_option_id が必要です。

ページのオプションを print_f 経由で出力すると、次のようになります。

[0] => Array
    (
        [product_option_id] => 
        [calc_group_id] => 0
        [description] => ####
        [option_id] => 469
        [name] => ####
        [type] => text
        [option_value] => 
        [required] => 0
    )

[1] => Array
    (
        [product_option_id] =>
        [calc_group_id] => 0
        [description] => ####
        [option_id] => 468
        [name] => ####
        [type] => text
        [option_value] => 
        [required] => 0
    )

問題を OpenCart の製品モデル (catalog/model/catalog/product.php) に絞り込みました。

そしてこの行:

    $product_option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option po LEFT JOIN `" . DB_PREFIX . "option` o ON (po.option_id = o.option_id) LEFT JOIN " . DB_PREFIX . "option_description od ON (o.option_id = od.option_id) WHERE po.product_id = '" . (int)$product_id . "' AND od.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.sort_order");

この SQL ステートメントを試してみたところ、product_option_id も正確に返されます。phpmyadmin でテストした場合、SQL ステートメントは正しい値を返しますが、上記のコード行はそうではありません ($product_option_query->$rows と product_option_id などのいくつかの値を出力しました)。

オプションを間違った方法で作成したとは思えません。それともその可能性はありますか?興味深いことに、他のいくつかのオプション (select type オプション) や、作成したオプション (select type に設定されている場合) でさえ、product_option_id を含むすべての値を返します。

4

1 に答える 1

2

誤警報、とにかくありがとう。

問題は opencart ではなく、私の前にこのプロジェクトに取り組んでいた人物でした。彼は、vqmod スクリプトで私が問題を抱えていた行を変更しました。言うまでもなく、彼の sql ステートメントは機能しませんでした。結果は 2 つの product_option_id であり、1 つは実際の結果で、もう 1 つは空でした。

これは私にとって教訓になります。プロジェクトを引き継ぐ場合は、以前に行った作業を常に再確認してください。

于 2012-11-06T14:24:18.270 に答える