Cornet gourmandises anniversaire
Serpentins, sarbacanes et cotillons pour une joyeuse ambiance, lots de crayons de coloriage pour un atelier créatif, friandises (popcorns, chamallows...), mini cadeaux... les possibilités sont nombreuses pour garnir vos cornets à surprises de petits plaisirs qui raviront les invités participants aux festivités !
Pour une présentation pratique et esthétique, nous vous conseillons de placer vos cornets sur des porte-cornets (à sélectionner en option), selon votre nombre d'invités. Vous pouvez placer jusqu'à 8 cornets sur un support.
NB : Nos cornets à surprises sont fournis sans garniture et livrés à plat afin d'être préservés au mieux pendant le transport. Pour le montage, il suffira simplement de leur donner leur forme et de les sécuriser à l'aide d'un sticker assorti (offert avec chaque cornet commandé).
Un montage facile et rapide du support sera également nécessaire si vous le commandez en option.
Nous sommes fiers de vous présenter notre collection capsule anniversaire, co-créée avec l'iconique vestiaire pour enfants BONTON. Ces créations pétillantes allient habilement les couleurs singulières et les motifs emblématiques de la griffe lifestyle pour enfants et la signature graphique, pointue et poétique, de notre atelier de papeterie haut de gamme.
Correction de l'orthographe et de la syntaxe, optimisation de la mise en page, contrôle qualité des photos, retouches et échanges avec nos équipes. Confiez votre commande à notre œil expert pour un résultat d’exception.
Cette option est à sélectionner dans le panier.
Des machines labellisées C02 neutral
Une distinction accordée aux entreprises ayant défini une stratégie de réduction des émissions de CO2.
Des encres plus vertes pour la planète
Notre atelier utilise uniquement des encres certifiées compostables et biodégradables.
Un ancrage local créateur d’emplois
Aujourd hui, Cotton Bird emploie une centaine de collaborateurs entre Lille, Paris et le sud de la France.
Une politique papier responsable
Nos papiers sont certifiés FSC, avec l’option 100% fibres recyclées proposées sur une large sélection de modèles.
Twig\Error\RuntimeError {#8494 -lineno: 6 -name: "@SyliusShop/StructuredData/_product.html.twig" -rawMessage: "An exception has been thrown during the rendering of a template ("Call to a member function getMinimumQuantity() on null")." -sourcePath: "/home/cottonbird/htdocs/front/releases/20260130092300Z/themes/CottonbirdB2C/templates/bundles/SyliusShopBundle/StructuredData/_product.html.twig" -sourceCode: """ {% import '@SyliusShop/StructuredData/Macro/structuredData.html.twig' as structuredData %}\n {% if product is not null %}\n {% set priceMinQuantity = get_product_variant_price(sylius.channel, product.getActiveVariants(sylius.channel).first, product.nature.minimumQuantity ) %}\n {% set totalPrice = priceMinQuantity is null ? 0 : priceMinQuantity['total'] %}\n {% set defaultAccessoryMinPrice = sylius.channel.code != constant('App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_NL')\n and sylius.channel.code != constant('App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_GB')\n ? get_default_accessory_min_price(sylius.channel, product.getActiveVariants(sylius.channel).first, product) : 0\n %}\n {% set price = sylius.channel.code == constant('App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_NL')\n or sylius.channel.code == constant('App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_GB')\n ? get_min_price(product) / 100 : (totalPrice / 100) + (defaultAccessoryMinPrice / 100)\n %}\n \n {{ structuredData.product(product,price) }}\n {% endif %}\n """ }
{% import '@SyliusShop/StructuredData/Macro/structuredData.html.twig' as structuredData %}{% if product is not null %}{% set priceMinQuantity = get_product_variant_price(sylius.channel, product.getActiveVariants(sylius.channel).first, product.nature.minimumQuantity ) %}{% set totalPrice = priceMinQuantity is null ? 0 : priceMinQuantity['total'] %}{% set defaultAccessoryMinPrice = sylius.channel.code != constant('App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_NL')and sylius.channel.code != constant('App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_GB')? get_default_accessory_min_price(sylius.channel, product.getActiveVariants(sylius.channel).first, product) : 0%}{% set price = sylius.channel.code == constant('App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_NL')or sylius.channel.code == constant('App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_GB')? get_min_price(product) / 100 : (totalPrice / 100) + (defaultAccessoryMinPrice / 100) return $this->blocks; } public function display(array $context, array $blocks = []): void { foreach ($this->yield($context, $blocks) as $data) { echo $data; } } public function render(array $context): string ob_start(); } else { ob_start(function () { return ''; }); } try { $this->display($context); } catch (\Throwable $e) { while (ob_get_level() > $level) { ob_end_clean(); } yield from $this->template->yieldBlock($name, $context); } public function render(array $context = []): string { return $this->template->render($context); } /** * @return void */ * @throws SyntaxError When an error occurred during compilation * @throws RuntimeError When an error occurred during rendering */ public function render($name, array $context = []): string { return $this->load($name)->render($context); } /** * Displays a template. * if ($this->container->has('templating')) { @trigger_error('Using the "templating" service is deprecated since Symfony 4.3 and will be removed in 5.0; use Twig instead.', \E_USER_DEPRECATED); $content = $this->container->get('templating')->render($view, $parameters); } elseif ($this->container->has('twig')) { $content = $this->container->get('twig')->render($view, $parameters); } else { throw new \LogicException('You can not use the "render" method if the Templating Component or the Twig Bundle are not available. Try running "composer require symfony/twig-bundle".'); } if (null === $response) { $params = [ 'configuration' => $configuration, 'resource' => $resource, $this->metadata->getName() => $resource, ]; $response = $this->render($configuration->getTemplate(ResourceActions::SHOW . '.html'), $params); $boxType = $request->attributes->get('boxType') ?? ''; $response->setPublic(); $response->headers->set('Surrogate-Control', 'content="ESI/1.0"'); if (null !== $resource) { $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS); $controller = $event->getController(); $arguments = $event->getArguments(); // call controller $response = $controller(...$arguments); // view if (!$response instanceof Response) { $event = new ViewEvent($this, $request, $type, $response, $event); $this->dispatcher->dispatch($event, KernelEvents::VIEW); $request->headers->set('X-Php-Ob-Level', (string) ob_get_level()); $this->requestStack->push($request); $response = null; try { return $response = $this->handleRaw($request, $type); } catch (\Throwable $e) { if ($e instanceof \Error && !$this->handleAllThrowables) { throw $e; } $this->boot(); ++$this->requestStackSize; $this->resetServices = true; try { return $this->getHttpKernel()->handle($request, $type, $catch); } finally { --$this->requestStackSize; } } ) { } public function run(): int { $response = $this->kernel->handle($this->request); if (Kernel::VERSION_ID >= 60400) { $response->send(false); if (\function_exists('fastcgi_finish_request') && !$this->debug) {$app = $app(...$args);exit( $runtime ->getRunner($app) ->run());<?phpuse App\Kernel;require_once dirname(__DIR__) . '/vendor/autoload_runtime.php';if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $_SERVER['HTTPS'] = 'on'; $_SERVER['SERVER_PORT'] = 443; /** @var ChannelInterface $channel */ $channel = $this->channelContext->getChannel(); $salesUnitRequirement = $product->getSalesUnitRequirement($channel->getDefaultLocale()->getCode()); $minimumQuantity = $product->getNature()->getMinimumQuantity() ?? 1; $quantity = (int) \ceil($salesUnitRequirement * $productQuantity / $product->getPack($channel)); return \max($quantity, $minimumQuantity); } $defaultAccessoryPrice = 0; /** @var ProductVariantAccessoryInterface $accessory */ foreach ($variant->getDefaultAccessories() as $accessory) { if (!$accessory->getAccessory()->isUnsellable()) { $quantity = self::getAccessoryQuantiyForProductQuantity( $accessory->getAccessory(), $product->getMinimumQuantity(), ); $price = $this->productPriceCalculator->getMaxPriceByProductVariant( $accessory->getAccessory(), public function getDefaultAccessoryMinPriceForMinProductQuantity( ChannelInterface $channel, ProductVariantInterface $variant, ProductInterface $product, ): float { return $this->accessoryHelper->getDefaultAccessoryPriceForMinQuantityProduct($channel, $variant, $product); } public function getMinPriceWithCatalogPromotion(ProductInterface $product): array { /** @var ChannelInterface $channel */ yield " "; $context["totalPrice"] = (((null === (isset($context["priceMinQuantity"]) || array_key_exists("priceMinQuantity", $context) ? $context["priceMinQuantity"] : (function () { throw new RuntimeError('Variable "priceMinQuantity" does not exist.', 4, $this->source); })()))) ? (0) : (CoreExtension::getAttribute($this->env, $this->source, (isset($context["priceMinQuantity"]) || array_key_exists("priceMinQuantity", $context) ? $context["priceMinQuantity"] : (function () { throw new RuntimeError('Variable "priceMinQuantity" does not exist.', 4, $this->source); })()), "total", [], "array", false, false, false, 4))); // line 5 yield " "; $context["defaultAccessoryMinPrice"] = ((((CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["sylius"]) || array_key_exists("sylius", $context) ? $context["sylius"] : (function () { throw new RuntimeError('Variable "sylius" does not exist.', 5, $this->source); })()), "channel", [], "any", false, false, false, 5), "code", [], "any", false, false, false, 5) != Twig\Extension\CoreExtension::constant("App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_NL")) && (CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, // line 6(isset($context["sylius"]) || array_key_exists("sylius", $context) ? $context["sylius"] : (function () { throw new RuntimeError('Variable "sylius" does not exist.', 6, $this->source); })()), "channel", [], "any", false, false, false, 6), "code", [], "any", false, false, false, 6) != Twig\Extension\CoreExtension::constant("App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_GB")))) ? ($this->extensions['App\Twig\Product\ProductExtension']->getDefaultAccessoryMinPriceForMinProductQuantity(CoreExtension::getAttribute($this->env, $this->source, // line 7(isset($context["sylius"]) || array_key_exists("sylius", $context) ? $context["sylius"] : (function () { throw new RuntimeError('Variable "sylius" does not exist.', 7, $this->source); })()), "channel", [], "any", false, false, false, 7), CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 7, $this->source); })()), "getActiveVariants", [CoreExtension::getAttribute($this->env, $this->source, (isset($context["sylius"]) || array_key_exists("sylius", $context) ? $context["sylius"] : (function () { throw new RuntimeError('Variable "sylius" does not exist.', 7, $this->source); })()), "channel", [], "any", false, false, false, 7)], "method", false, false, false, 7), "first", [], "any", false, false, false, 7), (isset($context["product"]) || array_key_exists("product", $context) ? $context["product"] : (function () { throw new RuntimeError('Variable "product" does not exist.', 7, $this->source); })()))) : (0)); // line 9 yield " "; $context["price"] = ((((CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, (isset($context["sylius"]) || array_key_exists("sylius", $context) ? $context["sylius"] : (function () { throw new RuntimeError('Variable "sylius" does not exist.', 9, $this->source); })()), "channel", [], "any", false, false, false, 9), "code", [], "any", false, false, false, 9) == Twig\Extension\CoreExtension::constant("App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_NL")) || (CoreExtension::getAttribute($this->env, $this->source, CoreExtension::getAttribute($this->env, $this->source, // line 10(isset($context["sylius"]) || array_key_exists("sylius", $context) ? $context["sylius"] : (function () { throw new RuntimeError('Variable "sylius" does not exist.', 10, $this->source); })()), "channel", [], "any", false, false, false, 10), "code", [], "any", false, false, false, 10) == Twig\Extension\CoreExtension::constant("App\\Entity\\Channel\\ChannelInterface::CHANNEL_COTTONBIRD_GB")))) ? (($this->extensions['App\Twig\Product\ProductExtension']->getMinPrice( // line 11 { $context += $this->env->getGlobals(); $blocks = array_merge($this->blocks, $blocks); try { yield from $this->doDisplay($context, $blocks); } catch (Error $e) { if (!$e->getSourceContext()) { $e->setSourceContext($this->getSourceContext()); } return $this->blocks; } public function display(array $context, array $blocks = []): void { foreach ($this->yield($context, $blocks) as $data) { echo $data; } } public function render(array $context): string ob_start(); } else { ob_start(function () { return ''; }); } try { $this->display($context); } catch (\Throwable $e) { while (ob_get_level() > $level) { ob_end_clean(); } yield from $this->template->yieldBlock($name, $context); } public function render(array $context = []): string { return $this->template->render($context); } /** * @return void */ * @throws SyntaxError When an error occurred during compilation * @throws RuntimeError When an error occurred during rendering */ public function render($name, array $context = []): string { return $this->load($name)->render($context); } /** * Displays a template. * if ($this->container->has('templating')) { @trigger_error('Using the "templating" service is deprecated since Symfony 4.3 and will be removed in 5.0; use Twig instead.', \E_USER_DEPRECATED); $content = $this->container->get('templating')->render($view, $parameters); } elseif ($this->container->has('twig')) { $content = $this->container->get('twig')->render($view, $parameters); } else { throw new \LogicException('You can not use the "render" method if the Templating Component or the Twig Bundle are not available. Try running "composer require symfony/twig-bundle".'); } if (null === $response) { $params = [ 'configuration' => $configuration, 'resource' => $resource, $this->metadata->getName() => $resource, ]; $response = $this->render($configuration->getTemplate(ResourceActions::SHOW . '.html'), $params); $boxType = $request->attributes->get('boxType') ?? ''; $response->setPublic(); $response->headers->set('Surrogate-Control', 'content="ESI/1.0"'); if (null !== $resource) { $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS); $controller = $event->getController(); $arguments = $event->getArguments(); // call controller $response = $controller(...$arguments); // view if (!$response instanceof Response) { $event = new ViewEvent($this, $request, $type, $response, $event); $this->dispatcher->dispatch($event, KernelEvents::VIEW); $request->headers->set('X-Php-Ob-Level', (string) ob_get_level()); $this->requestStack->push($request); $response = null; try { return $response = $this->handleRaw($request, $type); } catch (\Throwable $e) { if ($e instanceof \Error && !$this->handleAllThrowables) { throw $e; } $this->boot(); ++$this->requestStackSize; $this->resetServices = true; try { return $this->getHttpKernel()->handle($request, $type, $catch); } finally { --$this->requestStackSize; } } ) { } public function run(): int { $response = $this->kernel->handle($this->request); if (Kernel::VERSION_ID >= 60400) { $response->send(false); if (\function_exists('fastcgi_finish_request') && !$this->debug) {$app = $app(...$args);exit( $runtime ->getRunner($app) ->run());<?phpuse App\Kernel;require_once dirname(__DIR__) . '/vendor/autoload_runtime.php';if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') { $_SERVER['HTTPS'] = 'on'; $_SERVER['SERVER_PORT'] = 443;|
[2/2]
RuntimeError
|
|---|
Twig\Error\RuntimeError:
An exception has been thrown during the rendering of a template ("Call to a member function getMinimumQuantity() on null").
at themes/CottonbirdB2C/templates/bundles/SyliusShopBundle/StructuredData/_product.html.twig:6
at Twig\Template->yield()
(vendor/twig/twig/src/Template.php:344)
at Twig\Template->display()
(vendor/twig/twig/src/Template.php:359)
at Twig\Template->render()
(vendor/twig/twig/src/TemplateWrapper.php:51)
at Twig\TemplateWrapper->render()
(vendor/twig/twig/src/Environment.php:334)
at Twig\Environment->render()
(vendor/sylius/resource-bundle/src/Bundle/Controller/ControllerTrait.php:247)
at Sylius\Bundle\ResourceBundle\Controller\ResourceController->render()
(src/Controller/ProductController.php:245)
at App\Controller\ProductController->getProductFragmentAction()
(vendor/symfony/http-kernel/HttpKernel.php:181)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
(vendor/symfony/http-kernel/HttpKernel.php:76)
at Symfony\Component\HttpKernel\HttpKernel->handle()
(vendor/symfony/http-kernel/Kernel.php:197)
at Symfony\Component\HttpKernel\Kernel->handle()
(vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
(vendor/autoload_runtime.php:29)
at require_once('/home/cottonbird/htdocs/front/releases/20260130092300Z/vendor/autoload_runtime.php')
(public/index.php:5)
|
|
[1/2]
Error
|
|---|
Error:
Call to a member function getMinimumQuantity() on null
at src/Helper/AccessoryHelper.php:60
at App\Helper\AccessoryHelper->getAccessoryQuantiyForProductQuantity()
(src/Helper/AccessoryHelper.php:140)
at App\Helper\AccessoryHelper->getDefaultAccessoryPriceForMinQuantityProduct()
(src/Twig/Product/ProductExtension.php:1010)
at App\Twig\Product\ProductExtension->getDefaultAccessoryMinPriceForMinProductQuantity()
(var/cache/prod/twig/2c/2cde00a71e5a7de71b1bce15d9195acf.php:60)
at __TwigTemplate_cfa8b4111f694daac7d4c8bf612425dc->doDisplay()
(vendor/twig/twig/src/Template.php:388)
at Twig\Template->yield()
(vendor/twig/twig/src/Template.php:344)
at Twig\Template->display()
(vendor/twig/twig/src/Template.php:359)
at Twig\Template->render()
(vendor/twig/twig/src/TemplateWrapper.php:51)
at Twig\TemplateWrapper->render()
(vendor/twig/twig/src/Environment.php:334)
at Twig\Environment->render()
(vendor/sylius/resource-bundle/src/Bundle/Controller/ControllerTrait.php:247)
at Sylius\Bundle\ResourceBundle\Controller\ResourceController->render()
(src/Controller/ProductController.php:245)
at App\Controller\ProductController->getProductFragmentAction()
(vendor/symfony/http-kernel/HttpKernel.php:181)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
(vendor/symfony/http-kernel/HttpKernel.php:76)
at Symfony\Component\HttpKernel\HttpKernel->handle()
(vendor/symfony/http-kernel/Kernel.php:197)
at Symfony\Component\HttpKernel\Kernel->handle()
(vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
(vendor/autoload_runtime.php:29)
at require_once('/home/cottonbird/htdocs/front/releases/20260130092300Z/vendor/autoload_runtime.php')
(public/index.php:5)
|