nitra / e-commerce-admin-productseparationbundle
此包已被废弃,不再维护。未建议替代包。
nep 管理员产品分离包
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';
}
}