بيانات نشر نموذج إدارة Magento مفقودة
سؤال
أقوم بتطوير وحدة ماجنتو (1.9) مخصصة وقمت بإنشاء نموذج في المسؤول لإضافة/تحرير كيان يسمى "الاشتراك".سيؤدي هذا إما إلى إنشاء كائن اشتراك جديد أو تحرير كائن اشتراك موجود.
فيما يلي بلدي SubscriptionController.php
<?php
class Beyondroid_Subscribepro_Adminhtml_SubscriptionsController extends Mage_Adminhtml_Controller_Action {
public function indexAction() {
$subscriptionsBlock = $this->getLayout()
->createBlock('beyondroid_subscribepro_adminhtml/subscriptions');
$this->loadLayout();
$this->_setActiveMenu('beyondroid_subscribepro');
$this->_addContent($subscriptionsBlock);
$this->getLayout()->getBlock('head')->setTitle($this->__('Beyondroid SubscribePro - Subscriptions'));
$this->renderLayout();
}
public function editAction() {
$subscription = Mage::getModel('subscribepro/subscriptions');
if ($subscriptionId = $this->getRequest()->getParam('id', false)) {
$subscription->load($subscriptionId);
if (!($subscription->getId())) {
$this->_getSession()->addError(
$this->__('This subscription no longer exists.')
);
}
}
//var_dump($this->getRequest()->getPost());
/**
if ($postData = $this->getRequest()->getPost('subscriptionsData')) {
try {
$subscription->addData($postData);
$subscription->save();
$this->_getSession()->addSuccess(
$this->__('Subscription data was updated')
);
return $this->_redirect(
'adminhtml/subscriptions/edit', array('id' => $subscription->getId())
);
} catch (Exception $e) {
Mage::logException($e);
$this->_getSession->addError($e->getMessage());
}
}
**/
Mage::register('current_subscription', $subscription);
$subscriptionEditBlock = $this->getLayout()->createBlock(
'beyondroid_subscribepro_adminhtml/subscriptions_edit'
);
$this->loadLayout()
->_addContent($subscriptionEditBlock)
->renderLayout();
}
public function saveAction() {
var_dump($this->getRequest()->getPost());
die();
}
protected function _isAllowed() {
$actionName = $this->getRequest()->getActionName();
$adminSession = Mage::getSingleton('admin/session');
$isAllowed = $adminSession->isAllowed('beyondroid_subscribepro/subscriptions');
return $isAllowed;
}
}
وهنا هو Subscriptions/Edit/Form.php
class Beyondroid_Subscribepro_Block_Adminhtml_Subscriptions_Edit_Form extends Mage_Adminhtml_Block_Widget_Form {
protected function _prepareForm() {
$form = new Varien_Data_Form(array(
'id' => 'edit_form',
'action' => $this->getUrl('*/*/save', array(
'id' => $this->getRequest()->getParam('id'),
)),
'method' => 'post',
'enctype' => 'multipart/form-data',
));
$form->setUseContainer(true);
$fieldset = $form->addFieldSet(
'general',
array('legend' => 'Subscription Details')
);
$currentSubscription = $this->_getSubscription();
$fieldset->addField('product_id', 'text', array(
'label' => 'Product ID',
'required' => true,
'note' => 'This resembles the product ID for this subscription',
));
$fieldset->addField('deliveries', 'text', array(
'label' => 'No. of deliveries (in a month)',
'required' => true,
'note' => 'This resembles the number of deliveries to be made for this kind of a subscription in one month',
));
$fieldset->addField('unit_price', 'text', array(
'label' => 'Unit Price',
'required' => true,
'note' => 'This defines how much each delivery costs',
));
$form->setValues($currentSubscription->getData());
$this->setForm($form);
return parent::_prepareForm();
}
protected function _getSubscription() {
if (!$this->hasData('subscriptions')) {
$subscription = Mage::registry('current_subscription');
if (!$subscription instanceof
Beyondroid_Subscribepro_Model_Subscriptions) {
$subscription = Mage::getModel(
'beyondroid_subscribepro/subscriptions'
);
}
$this->setData('subscription', $subscription);
}
return $this->getData('subscription');
}
}
يتم تحميل النموذج بشكل صحيح في كلتا الحالتين الجديد/التحرير (كما هو موضح في الصورة أعلاه).المشكلة هي عندما أحاول حفظ النموذج، لا أحصل على أي بيانات مشاركة.يؤدي النقر فوق زر الحفظ إلى توجيهك إلى saveAction
الطريقة في وحدة التحكم الخاصة بي ولكن بيانات النشر عبارة عن مصفوفة تحتوي على زوج قيمة مفتاح واحد فقط، على سبيل المثال. form_key => 'some random string'
.
فيما يلي ما var_dump
بيان في saveAction
إرجاع الطريقة:
أي أفكار ما الذي أفتقده هنا؟
تحديث
فيما يلي ما أراه في حمولة الطلب، أي:بيانات المشاركة المفقودة :O
تحديث 2
تبدو بنية html للنموذج جيدة.الحقول موجودة داخل <form></form>
العلامات ونموذج واحد فقط على الصفحة.
المحلول
في لقطة الشاشة الأخيرة الخاصة بك، أرى أن الحقول التي ترسلها ليس لها اسم.
انظر إلى الإدخال بالمعرف product_id
على سبيل المثال.ال name
السمة فارغة.
أعتقد أن المشكلة تأتي من الطريقة التي حددت بها حقولك.
لنأخذ هذا على سبيل المثال:
$fieldset->addField('product_id', 'text', array(
'label' => 'Product ID',
'required' => true,
'note' => 'This resembles the product ID for this subscription',
));
لا يوجد name
السمة في مجموعة التكوين.
يجب أن يكون شيء من هذا القبيل:
$fieldset->addField('product_id', 'text', array(
'name' => 'product_id', //you are missing this in your code
'label' => 'Product ID',
'required' => true,
'note' => 'This resembles the product ID for this subscription',
));
افعل نفس الشيء مع الحقول الأخرى وحاول مرة أخرى.