Magentoシステムで多数の属性の保存が全く機能しない、または部分的にしか機能しないという問題が発生しています。これはJavaScriptに関する問題であると思われ、Stack Overflowの誰かがこの状況に対処するための「既知の科学」を持っていることを望んでいたか、正しい方向に向けることができました。Magentoで大量の属性オプションラベルを保存する際の問題
問題のMagentoシステムは250以上の色属性オプションラベルを持っています。 >属性 - - >色を選択する属性
- を行うことにより、これらを管理しようとした場合
Google Chrome on OS Xでは、ボタンが「押し下げられた」状態になり、一定時間が経過するとGoogle Chromeの「このページは反応しません」という殺人ダイアログが表示されます。
OS XのMozillaベースのブラウザでは、ボタンをクリックするとブラウザが少し考えられますが、最終的にフォームが送信されます。 の場合、属性ラベルの部分的なリストのみが管理コントローラに送信されます。これは、他のラベルが決して提出されないので、最初の75〜100のラベルだけを編集できることを意味します。
私は明白な答えがパフォーマンスの低いJavaScriptを調査し、または(グルーチョ・マルクススタイル)するのどちらかであるだけでなく第2行動を記述したWindowsユーザーからの報告(ブラウザは非特異的である)
を持って「実行しませんそれ"。そのページでJavaScriptのプロファイリング/発掘に時間を費やす前に、問題の原因となっていたことに関する特定の知識があることが分かっていました。
Magento CE 1.7.x、それが揃っていれば、
更新: JavaScriptのパフォーマンスの問題は、赤いニシンです。彼らは、入力フィールドの膨大な数に起因しているが、反復処理されている。具体的
try {
if(this.options.stopOnFirst) {
result = Form.getElements(this.form).all(function(elm) {
if (elm.hasClassName('local-validation') && !this.isElementInForm(elm, this.form)) {
return true;
}
return Validation.validate(elm,{useTitle : useTitles, onElementValidate : callback});
}, this);
} else {
result = Form.getElements(this.form).collect(function(elm) {
if (elm.hasClassName('local-validation') && !this.isElementInForm(elm, this.form)) {
return true;
}
return Validation.validate(elm,{useTitle : useTitles, onElementValidate : callback});
}, this).all();
}
} catch (e) {
}
しかし、このトライcatchブロックで
js/prototype/validation.js
、
であってもI短絡これと真の関数の戻り値を持っています、すべてのラベルを保存しないという動作はそのままです。
これは問題のようです。私がPOST配列を平坦化して数えれば、それはちょうど1000の要素を持っています。来る人達は、このバグレポートを読むべきです.max_input_varsのドキュメントはやや不正確です。 https://bugs.php.net/bug.php?id=62921&edit=1 –
これも私の問題を修正しました(Alan Stormと同じ問題です)。 max_input_varsはすでに1000に設定されていましたが、380の属性値では機能しませんでした。 3000に設定すると、ボタンはクロムで押されたままですが、値は正しく保存されました。 –