Sonata 产品列表错误(Sonata E-Commerce Bundle)

Posted

技术标签:

【中文标题】Sonata 产品列表错误(Sonata E-Commerce Bundle)【英文标题】:Sonata Product list error(Sonata E-Commerce Bundle) 【发布时间】:2017-02-19 05:16:09 【问题描述】:

我正在使用奏鸣曲电子商务捆绑包。成功安装捆绑包及其依赖项后,我按预期获得了管理仪表板页面。

但是,当我单击产品的“添加新”选项时,我得到一个空白块,没有字段或按钮。这是屏幕截图

但这不是它。当我单击产品的“列表”选项时,出现以下错误

An exception occurred while executing 'SELECT count(DISTINCT p0_.id) AS sclr_0 FROM product__product p0_ LEFT JOIN product__product_category p1_ ON p0_.id = p1_.product_id LEFT JOIN classification__category c2_ ON p1_.category_id = c2_.id LEFT JOIN product__product_collection p3_ ON p0_.id = p3_.product_id LEFT JOIN classification__collection c4_ ON p3_.collection_id = c4_.id WHERE p0_.product_type IN ()':

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册,以在第 1 行的 ')' 附近使用正确的语法

在网上搜索时,我在 github 上发现了一个同样问题的帖子 (https://github.com/sonata-project/ecommerce/issues/9)。我遵循了建议的解决方案,即。

使用php app/console sonata:product:generate Bowl sonata.ecommerce_demo.product.bowl 创建了一个产品类型(碗) 已导入资源 创建app/config/sonata/sonata_product.yml,如文档中所示 最后让 Bowl 类继承 Product 类

我还是遇到同样的错误。

这是我的 Bowl.php

<?php

/*
 * This file is part of the <name> project.
 *
 * (c) <yourname> <youremail>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Application\Sonata\ProductBundle\Entity;

//use Sonata\ProductBundle\Entity\Product as Product;

/**
 * This file has been generated by the Sonata product generation command ( https://sonata-project.org/ )
 *
 * References :
 *   working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en
 *
 * @author <yourname> <youremail>
 */
class Bowl extends Product 

    /**
     * @var integer $id
     */
    protected $id;

    /**
     * Get id
     *
     * @return integer $id
     */
    public function getId() 
        return $this->id;
    

    /**
     * @param int $id
     */
    public function setId($id) 
        $this->id = $id;
    


有什么想法吗?

【问题讨论】:

【参考方案1】:

想通了:

创建产品类型 (http://sonata-project.org/bundles/ecommerce/master/doc/reference/tutorials/create-product.html) php app/console sonata:product:generate Bowl sonata.ecommerce_demo.product.bowl

导入所有资源

完成后,编辑 src/Application/Sonata/ProductBundle/Entity/Bowl.php 使其继承 Product 类。

碗类扩展产品

注意:不要忘记导入 sonata_product.yml(文档中没有提到)。添加 - resource: sonata/sonata_product.yml 到您的 config.yml

【讨论】:

以上是关于Sonata 产品列表错误(Sonata E-Commerce Bundle)的主要内容,如果未能解决你的问题,请参考以下文章

Sonata Admin 的 sonata_type_model 字段的自定义选项列表

Symfony 4 + Sonata + Sonata Doctrine ORM Admin Bundle:错误:没有要处理的元数据类

通过 sonata_type_collection 字段将 sonata_media_type 用作 1:N 时出现 500 错误

Symfony + Sonata,一对多关系

编译错误:声明 Sonata\Translation Bundle\Block\LocaleSwitcherBlockService::validate Block()

Symfony / Sonata Admin:编辑表单上的列表表单