将产品添加到购物车时出现错误

时间:2019-06-11 07:14:45

标签: php mysql magento magento-1.9

我尝试以编程方式添加产品。我使用下面的代码

$cart = Mage::getSingleton('checkout/cart');
$cart->init();
$paramater = array(
            'product' => $product->getId(),
            'related_product' => null,
            'qty' => 1,
            'form_key' => Mage::getSingleton('core/session')->getFormKey()
        );
$request = new Varien_Object();
$request->setData($paramater);
$cart->addProduct($product, $request);
$cart->save();

此代码在登录后工作正常。但是在登录之前,我遇到以下错误。

  

a:5:{i:0; s:640:“ SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败(db_magento_nua。{{1 }},约束sales_flat_quote_item外键(FK_SALES_FLAT_QUOTE_ITEM_QUOTE_ID_SALES_FLAT_QUOTE_ENTITY_ID)参考quote_idsales_flat_quote)在DELE上),查询为:INSERT INTO entity_id({{1} },sales_flat_quote_itemcreated_atupdated_atproduct_idstore_idis_virtualskunameis_qty_decimalweightqtycustom_priceproduct_type)值('2019-06-11 12:17:58','2019-06- 11 12:17:58',?,?,?,?,?,?,?,?,?,?,?,?,?)“; i:1; s:2586:”#0 / var / www / html / lib / Varien / Db / Statement / Pdo / Mysql.php(110):Zend_Db_Statement_Pdo-> _ execute(Array)

有人可以帮助我解决此问题吗?预先感谢。

2 个答案:

答案 0 :(得分:1)

尝试使用 Validators

<mat-form-field class="px-3 mb-1">
    <input matInput [formControl]="FormControl1" placeholder="VALUE 1" (blur)="update()" type="number" required>
    <mat-error *ngIf="FormControl1.hasError('required')">FormControl1 *</mat-error>
    <mat-error *ngIf="FormControl1.hasError('min')">FormControl1 > 0</mat-error>
    <mat-error *ngIf="FormControl1.hasError('max')">FormControl1 < 31</mat-error>
    <mat-error *ngIf="FormControl1.hasError('error')">TEST error "2"</mat-error>
</mat-form-field>
<mat-form-field class="px-3 mb-1">
    <input matInput [formControl]="FormControl2" placeholder="VALUE 2" (blur)="update()" type="number" required>
    <mat-error *ngIf="FormControl2.hasError('required')">FormControl2 *</mat-error>
    <mat-error *ngIf="FormControl2.hasError('min')">FormControl2 > 0</mat-error>
    <mat-error *ngIf="FormControl2.hasError('max')">FormControl2 < 31</mat-error>
</mat-form-field>

答案 1 :(得分:1)

我为此找到了解决方案。由于没有报价,我无法添加项目。在将产品添加到购物车之前,我只需要启动报价即可。我现在使用下面的代码添加产品。

 $cart = Mage::getSingleton('checkout/cart');
 $cart->init();
 $quote = $cart->getQuote();
 $paramater = array(
    'product' => $product->getId(),
    'qty' => 1,
    'form_key' => Mage::getSingleton('core/session')->getFormKey()
 ); 
 $request = new Varien_Object();
 $request->setData($paramater);
 $quote->addProduct($product, $request);
 $quote->save();
 $cart->save();

以上代码按预期工作。