Skip to content

Commit

Permalink
Merge pull request #7238 from tuka217/api-product
Browse files Browse the repository at this point in the history
[API][Product] Crud for product
  • Loading branch information
pjedrzejewski committed Jan 20, 2017
2 parents 5e83e1e + 04e9213 commit bc9f648
Show file tree
Hide file tree
Showing 16 changed files with 1,500 additions and 142 deletions.
660 changes: 550 additions & 110 deletions docs/api/products.rst

Large diffs are not rendered by default.

@@ -0,0 +1,48 @@
<?php

/*
* This file is part of the Sylius package.
*
* (c) Paweł Jędrzejewski
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Sylius\Bundle\ApiBundle\Form\Extension;

use Sylius\Bundle\ApiBundle\Form\EventSubscriber\RemoveVariantSelectionFieldFormSubscriber;
use Sylius\Bundle\ProductBundle\Form\Type\ProductType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;

/**
* @author Anna Walasek <anna.walasek@lakion.com>
*/
final class ApiProductTypeExtension extends AbstractTypeExtension
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->addEventListener(FormEvents::PRE_SUBMIT , function (FormEvent $event) {
$data = $event->getData();

if (!array_key_exists('variantSelectionMethod', $data)) {
$form = $event->getForm();
$form->remove('variantSelectionMethod');
}
});
}

/**
* {@inheritdoc}
*/
public function getExtendedType()
{
return ProductType::class;
}
}
Expand Up @@ -8,6 +8,7 @@ sylius_api_product_index:
_controller: sylius.controller.product:indexAction
_sylius:
serialization_version: $version
serialization_groups: [Default]
paginate: $limit
sortable: true
sorting:
Expand All @@ -20,7 +21,6 @@ sylius_api_product_create:
_controller: sylius.controller.product:createAction
_sylius:
serialization_version: $version
form: sylius_api_product

sylius_api_product_update:
path: /{id}
Expand All @@ -29,7 +29,6 @@ sylius_api_product_update:
_controller: sylius.controller.product:updateAction
_sylius:
serialization_version: $version
form: sylius_api_product

sylius_api_product_delete:
path: /{id}
Expand All @@ -47,3 +46,4 @@ sylius_api_product_show:
_controller: sylius.controller.product:showAction
_sylius:
serialization_version: $version
serialization_groups: [Default, Detailed]
4 changes: 4 additions & 0 deletions src/Sylius/Bundle/ApiBundle/Resources/config/services.xml
Expand Up @@ -36,5 +36,9 @@
<argument type="collection"><argument>sylius</argument></argument>
<tag name="form.type" />
</service>

<service id="sylius.form.extension.type.api_product" class="Sylius\Bundle\ApiBundle\Form\Extension\ApiProductTypeExtension">
<tag name="form.type_extension" extended-type="Sylius\Bundle\ProductBundle\Form\Type\ProductType" />
</service>
</services>
</container>
Expand Up @@ -5,3 +5,22 @@ Sylius\Component\Core\Model\Product:
shortDescription:
expose: true
type: string
averageRating:
expose: true
type: float
groups: [Default, Detailed]
images:
expose: true
type: array
groups: [Default, Detailed]
reviews:
expose: true
type: array
groups: [Detailed]
productTaxons:
expose: true
type: array
groups: [Detailed]
mainTaxon:
expose: true
groups: [Detailed]
Expand Up @@ -6,20 +6,52 @@ Sylius\Component\Product\Model\Product:
expose: true
type: integer
xml_attribute: true
description:
groups: [Default, Detailed]
code:
expose: true
type: string
groups: [Default, Detailed]
channels:
expose: true
type: array
groups: [Default, Detailed]
options:
expose: true
type: array
groups: [Default, Detailed]
attributes:
expose: true
max_depth: 2
createdAt:
type: array
groups: [Detailed]
associations:
expose: true
type: array
groups: [Detailed]
variants:
expose: true
type: array
groups: [Detailed]
translations:
expose: true
type: array
groups: [Detailed]
availableOn:
expose: true
type: DateTime
updatedAt:
groups: [Detailed]
availableUntil:
expose: true
type: DateTime
groups: [Detailed]
virtual_properties:
getName:
serialized_name: name
getVariants:
serialized_name: variants
relations:
- rel: self
href:
route: sylius_api_product_show
parameters:
id: expr(object.getId())
version: 1
exclusion:
groups: [Detailed]
4 changes: 1 addition & 3 deletions src/Sylius/Component/Core/Model/Product.php
Expand Up @@ -29,7 +29,7 @@ class Product extends BaseProduct implements ProductInterface, ReviewableProduct
/**
* @var string
*/
protected $variantSelectionMethod;
protected $variantSelectionMethod = self::VARIANT_SELECTION_CHOICE;

/**
* @var Collection|ProductTaxonInterface[]
Expand Down Expand Up @@ -69,8 +69,6 @@ public function __construct()
$this->channels = new ArrayCollection();
$this->reviews = new ArrayCollection();
$this->images = new ArrayCollection();

$this->variantSelectionMethod = self::VARIANT_SELECTION_CHOICE;
}

/**
Expand Down

0 comments on commit bc9f648

Please sign in to comment.