Динамические поля формы в Symfony 1.4 - PullRequest
1 голос
/ 29 октября 2010

Я работаю над проектом электронной коммерции, и я застрял в обновлении корзины.Здесь я должен представить форму, используя содержимое текущей корзины, с полями ввода, содержащими текущие количества.

Я проверил документацию и форумы, но не нашел ничего полезного.Проблема в том, что я не могу объявить точные поля формы в своем классе формы, потому что я не знаю, сколько полей будет там.Я попробовал это:

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, потому что, когда я отправляю форму, она не вызывает это:*

Если я уберу требование, корзина / обновление запустится, но у меня нет данных $ _POST в объекте запроса.У вас есть идеи?

1 Ответ

4 голосов
/ 29 октября 2010

Это поможет вам динамически добавлять поля формы и работать с проверкой этих полей:

...