回答:
質問で説明されているように、この問題はここで扱われましたが、答えは私にとってうまくいきませんでした。
ここに完全な実用的なソリューションを追加します(method 2
)。
これは私にとってうまく機能しているコードです:
$cat_products_split = explode('&', $data['category_products']);
foreach ($cat_products_split as $row) {
$arr = explode('=', $row);
if (count($arr) == 2) {
$products[$arr[0]] = $arr[1];
}
}
-ここを修正するための手順-
1.新しいモジュールの作成
CategoryFix
ローカルでモジュールを作成しましょう。
ここにconfig.xml
:
<?xml version="1.0"?>
<config>
<modules>
<MYNAMESPACE_CategoryFix>
<version>0.1.0</version>
</MYNAMESPACE_CategoryFix>
</modules>
<admin>
<routers>
<adminhtml>
<args>
<modules>
<!--FOR THE USE OF OUR CONTROLLER BEFORE THE CORE ONES -->
<categoryfix before="Mage_Adminhtml">MYNAMESPACE_CategoryFix_Adminhtml</categoryfix>
</modules>
</args>
</adminhtml>
</routers>
</admin>
</config>
2.カテゴリコントローラを上書きする(saveAction()
)
コントローラーファイル: /MYNAMESPACE/CategoryFix/Adminhtml/Catalog/CategoryController
<?php
require_once 'Mage/Adminhtml/controllers/Catalog/CategoryController.php';
class MYNAMESPACE_CategoryFix_Adminhtml_Catalog_CategoryController extends Mage_Adminhtml_Catalog_CategoryController
{
/**
* Category save
*/
public function saveAction()
{
// 1. COPY HERE THE CODE FROM THE ORIGINAL SAVEACTION() METHOD
// 2. COMMENT THIS LINE: `parse_str($data['category_products'], $products);`
// USE THE CODE REPORTED ABOVE
}
}
max_post_size