我正在做一个电子商务项目,但我卡在了购物车更新上。在这里,我必须使用当前购物车的内容呈现一个表单,其中包含当前数量的输入字段。
我检查了文档和论坛,但没有发现任何有用的东西。问题是我无法在表单类中声明确切的表单字段,因为我不知道会有多少字段。我试过这个:
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 数据。你有什么想法?