حقول النموذج الديناميكي في Symfony 1.4
-
27-09-2019 - |
سؤال
أنا أعمل في مشروع للتجارة الإلكترونية وحصلت على تحديث العربة. يجب علي هنا تقديم نموذج باستخدام محتويات العربة الحالية ، مع حقول الإدخال التي تحتوي على الكميات الحالية.
راجعت الوثائق والمنتديات ، لكنني لم أجد أي شيء مفيد. المشكلة هي أنه لا يمكنني إعلان حقول النماذج الدقيقة في فصل النموذج الخاص بي لأنني لا أعرف عدد الحقول التي ستكون هناك. حاولت هذا:
class CartForm extends sfForm {
public function configure()
{
$cart = sfContext::getInstance()->getUser()->getShoppingCart();
foreach ($cart->getItems() as $item) {
$widgetName = $item->getId().'_quantity';
$this->widgetSchema[$widgetName] = new sfWidgetFormInput(
array(),
array(
'class' => 'quantity-input',
'id' => null,
'name' => $widgetName
)
);
$this->widgetSchema->setDefault($widgetName, $item->getQuantity());
$this->validatorSchema[$widgetName] = new sfValidatorInteger(array(
'required' => true,
'min' => 1
),
array());
}
unset($cart);
$this->getWidgetSchema()->getFormFormatter()->setRowFormat('%field%%error%%hidden_fields%');
}
}
لكن لدي بعض الأخطاء:
Fatal error: Cannot use object of type sfShoppingCart as array in /home/sfprojects/mdmall/lib/vendor/symfony/lib/form/sfForm.class.php on line 784
لذلك ليس هذا هو الطريق الصحيح. حاولت استخدام الحقول الأولية دون أي فئات نموذج (ومقحة) ولكن شيء غريب للغاية يحدث ، بدلاً من الحصول على قيم $ _post ، أحصل على خطأ 404 لأنه عندما أقوم بإرسال النموذج ، فإنه لا يؤدي إلى هذا:
cart_update:
url: /cart/update.:sf_format
class: sfRequestRoute
param: { module: cart, action: update, sf_format: html }
requirements: { sf_method: post }
إذا قمت بإزالة المتطلبات ، يتم تشغيل CART/UPDATE ، لكن ليس لدي بيانات $ _POST في كائن الطلب. هل لديك أي أفكار؟
المحلول
سوف تساعدك هذه فيما يتعلق بإضافة حقول النماذج ديناميكيًا والعمل مع التحقق من صحة هذه الحقول:
- أشكال emedded الديناميكية (لكن العملية مشابهة للحقول)
- حقول النموذج الديناميكي
- التحقق المخصص