allowing adding product to cart

This commit is contained in:
Manuel Raynaud
2013-09-13 19:41:12 +02:00
parent df569d1071
commit 7f4a69fcfb
4 changed files with 74 additions and 33 deletions

View File

@@ -99,7 +99,6 @@
</route>
<route id="cart.add.process" path="/cart/add">
<default key="_controller">Thelia\Controller\Front\CartController::addItem</default>
<default key="_view">cart</default>
</route>
<route id="cart.delete.process" path="/cart/delete/{cart_item}">

View File

@@ -94,7 +94,7 @@ class ViewListener implements EventSubscriberInterface
{
$request = $this->container->get('request');
if (!$view = $request->attributes->get('_view')) {
if (null === $view = $request->attributes->get('_view')) {
$request->attributes->set('_view', $this->findView($request));
}

View File

@@ -29,6 +29,7 @@ use Thelia\Form\Exception\ProductNotFoundException;
use Thelia\Model\ProductSaleElementsQuery;
use Thelia\Model\ConfigQuery;
use Thelia\Model\ProductQuery;
use Thelia\Core\Translation\Translator;
/**
* Class CartAdd
@@ -75,10 +76,12 @@ class CartAdd extends BaseForm
))
->add("product_sale_elements_id", "text", array(
"constraints" => array(
new Constraints\NotBlank(),
new Constraints\Callback(array("methods" => array(
array($this, "checkStockAvailability")
)))
)
),
"required" => true
))
->add("quantity", "text", array(
@@ -90,6 +93,10 @@ class CartAdd extends BaseForm
new Constraints\GreaterThanOrEqual(array(
"value" => 0
))
),
"label" => Translator::getInstance()->trans("Quantity"),
"label_attr" => array(
"for" => "quantity"
)
))
->add("append", "hidden")
@@ -126,13 +133,17 @@ class CartAdd extends BaseForm
{
$data = $context->getRoot()->getData();
$productSaleElements = ProductSaleElementsQuery::create()
->filterById($data["product_sale_elements_id"])
->filterByProductId($data["product"])
->findOne();
if (null === $data["product_sale_elements_id"]) {
$context->addViolationAt("quantity", Translator::getInstance()->trans("Invalid product_sale_elements"));
} else {
$productSaleElements = ProductSaleElementsQuery::create()
->filterById($data["product_sale_elements_id"])
->filterByProductId($data["product"])
->findOne();
if ($productSaleElements->getQuantity() < $value && ConfigQuery::read("verifyStock", 1) == 1) {
$context->addViolation("quantity value is not valid");
if ($productSaleElements->getQuantity() < $value && ConfigQuery::read("verifyStock", 1) == 1) {
$context->addViolation("quantity value is not valid");
}
}
}