Я работаю над проектом электронной коммерции, и я застрял в обновлении корзины. Здесь я должен представить форму, используя содержимое текущей корзины, с полями ввода, содержащими текущие величины.Динамические поля формы в Symfony 1.4
Я проверил документацию и форумы, но я не нашел ничего полезного. Проблема в том, что я не могу объявить точные поля формы в классе формы, потому что я не знаю, сколько полей будет там. Я попытался это:
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 }
Если я уберу требование, прохождение корзины/обновления выполняется, но у меня нет данных $ _POST в объекте запроса. У тебя есть идеи?
Большое спасибо за ваш ответ !! –