顧客が独自の製品を作成し、有効にする前に管理者に承認してもらうためのモジュールを使用して、フロントエンドからmagento製品を更新する際に問題が発生しました(この部分は機能しています)。
問題は、顧客が管理者が承認した製品を更新しようとした場合です(承認前と同様に、製品は新しく作成された製品が保留中であると述べていますが、製品の作成機能中に作成されたデータ/属性は更新できません。同じ属性は更新されません。コントローラを使用して)
まず第一に、承認された/保留中の顧客製品を更新するアクションを備えたコントローラーがあります
public function editPostAction() {
$id = $this->getRequest()->getParam('productid');
if ( $id !== false ) {
list($data, $errors) = $this->validatePost();
if ( !empty($errors) ) {
foreach ($errors as $message) {
$this->_getSession()->addError($message);
}
$this->_redirect('customer/products/edit/', array(
'id' => $id
));
} else {
$customerId = $this->_getSession()->getCustomer()->getid();
$product = Mage::getResourceModel('customerpartner/customerpartner_product_collection')
->addAttributeToSelect('*')
->addAttributeToFilter('customer_id', $customerId)
->addAttributeToFilter('entity_id', $id)
->load()
->getFirstItem();
$product->setName($this->getRequest()->getParam('name'));
$product->setSku($this->getRequest()->getParam('sku'));
$product->setDescription($this->getRequest()->getParam('description'));
$product->setShortDescription($this->getRequest()->getParam('short_description'));
$product->setPrice($this->getRequest()->getParam('price'));
$product->setWeight($this->getRequest()->getParam('weight'));
$product->setStock($this->getRequest()->getParam('stock'));
$product->save();
if ( isset($_FILES) && count($_FILES) > 0 ) {
foreach($_FILES as $image ) {
if ( $image['tmp_name'] != '' ) {
if ( ( $error = $this->uploadImage($image, $id) ) !== true ) {
$errors[] = $error;
}
}
}
}
if ( empty($errors) ) {
$this->_getSession()->addSuccess($this->__('Your product was successfully updated'));
} else {
$this->_getSession()->addError('Product info was saved but was imposible to save the image');
foreach ($errors as $message) {
$this->_getSession()->addError($message);
}
}
$this->_redirect('customer/products/');
}
}
}
送信時に製品の属性と画像を更新することになっているフォームと同様に、送信時にページがリロードされ、正常に保存されたメッセージが表示されますが、属性は更新されず、その製品の編集フォーム(作成された製品ごと)に戻ります更新フォームの値には、送信したばかりの更新の値が含まれていますが、製品の属性もカタログで更新されていません(これらは、新しい作成プロセスで入力した値と同じままです)。
何が問題になっているのかを把握し続けるか、APIを使用するかSQLを直接使用して作業を完了するかを選択してください。