nitra/e-commerce-admin-productseparationbundle

此包已被废弃,不再维护。未建议替代包。

nep 管理员产品分离包

安装: 28

依赖者: 0

建议者: 0

安全: 0

类型:symfony-bundle

dev-master 2014-08-27 13:25 UTC

This package is not auto-updated.

Last update: 2018-05-06 20:38:16 UTC


README

用途

用于将商品分组打包的插件。在编辑商品时,可以在第一个标签页下方更改分组。默认有三个分组:

  • 新商品(创建商品时,商品将被放入的分组。在数据库(mongoDB)中,商品的状态字段设置为 new_products)
  • 展示区(展示在网站上的商品分组。在数据库(mongoDB)中,商品的状态字段设置为 showcase)
  • 存档(存档非活动商品 - 额外分组。在数据库(mongoDB)中,商品的状态字段设置为 archive)

通过创建新的生成器来实现,相应地,也创建了控制器、路由和模板。

    generator: admingenerator.generator.doctrine_odm
    params:
        model: Nitra\ProductBundle\Document\Product
        namespace_prefix: Nitra
        bundle_name: ProductSeparationBundle
        i18n_catalog: NitraProductBundle
        #...

在 ListController 中,每个分组在构建数据库查询时,都添加了状态字段的条件,以匹配相应的值。

    <?php

    namespace Nitra\ProductSeparationBundle\Controller\Archive;

    use Admingenerated\NitraProductSeparationBundle\BaseArchiveController\ListController as BaseListController;

    class ListController extends BaseListController
    {
        protected function buildQuery()
        {
            $session = $this->getRequest()->getSession();
            
            $dm = parent::buildQuery();
            $dm->addAnd($dm->expr()->field('status')->equals('archive'));
            //выводим товары текущего магазина и товары не относящиеся ни к одному из магазинов
            $dm->addOr($dm->expr()->field('stores.$id')->equals(new \MongoId($session->get('store_id'))));
            $dm->addOr($dm->expr()->field('stores')->exists(false));
                
            return $dm;
        }
    }

Edit 和 New 控制器分别继承自 ProductBundle 控制器,但它们重新定义了主要的路由和模板。

    <?php

    namespace Nitra\ProductSeparationBundle\Controller\Archive;

    use Nitra\ProductBundle\Controller\Product\EditController as BaseEditController;

    class EditController extends BaseEditController
    {
        public function getNewRoute()
        {
            return 'Nitra_ProductSeparationBundle_Archive_new';
        }
        public function getListRoute()
        {
            return 'Nitra_ProductSeparationBundle_Archive_list';
        }
        public function getEditRoute()
        {
            return 'Nitra_ProductSeparationBundle_Archive_edit';
        }
        public function getEditTwig()
        {
            return 'NitraProductSeparationBundle:ArchiveEdit:index.html.twig';
        }
        public function getUpdateRoute()
        {
            return 'Nitra_ProductSeparationBundle_Archive_update';
        }
        public function getCreateRoute()
        {
            return 'Nitra_ProductSeparationBundle_Archive_create';
        }
    }