## Getting Started
### **Minimal Setup for Local Development**
1. **Clone the Repository**
```bash
git clone https://github.com/akeneo/pim-community-dev.git
cd pim-community-dev
dev-master branch for the latest development version (now aligned with v2026.3).README.md—ensure you reference v2026.x constraints in composer.json:
"require": {
"akeneo/pim-community-dev": "^2026.3"
}
Install Dependencies
composer install
--prefer-dist for faster installs:
composer install --prefer-dist --no-dev
Configure Environment
.env.dist to .env and update:
APP_ENV=dev
APP_DEBUG=true
DATABASE_URL="mysql://user:pass@127.0.0.1:3306/pim"
PIM_VERSION=2026.3 # Explicitly set version (new in v2026.3)
php bin/console akeneo:install:framework
First Use Case: Launch a Local PIM Instance
php bin/console server:run
http://localhost:8000 (admin credentials: admin/admin).v2026.3)./api/v2026).src/ – Core PIM logic (updated for v2026.3 features).config/ – Bundle configurations (e.g., pim_catalog/v2026.yaml).var/ – Runtime data (logs, cache, uploads).php bin/console pim:version:check # Verify installed version
php bin/console debug:config pim_catalog | grep "2026"
Use Case: Adding custom attributes or attribute types.
AttributeTypeRegistry (v2026.3 introduces stricter type validation).
# config/pim_catalog/attributes.yaml
akeneo_attribute.simple:
pim_catalog.attribute.simple:
- your_custom_attribute_v2026 # Prefix for clarity
config/pim_catalog/attributes.yaml with versioned keys.AttributeTypeInterface (updated in v2026.3):
// src/Service/CustomAttributeType.php
use Akeneo\Tool\Component\Attribute\Type\TypeInterface;
use Akeneo\Tool\Component\Attribute\Type\AbstractType;
class CustomAttributeType extends AbstractType implements TypeInterface
{
public function getName(): string { return 'pim_catalog.attribute.type.custom_v2026'; }
public function getType(): string { return 'custom_v2026'; }
// ... (implement v2026.3 methods)
}
services.yaml:
services:
your_bundle.attribute_type.custom_v2026:
class: Your\Bundle\Service\CustomAttributeType
tags: [pim_catalog.attribute.type]
Use Case: Adding a tab or modifying the product grid.
{# templates/pim_enrich/product/_tab_custom_v2026.html.twig #}
<div class="custom-tab pim-tab-v2026">
{{ include('YourBundle:Product:_custom_content.html.twig') }}
</div>
pim_enrich.datagrid.builder.v2026 for grid extensions:
$builder->add('your_custom_column_v2026', 'string', [
'label' => 'Your Label (v2026)',
'searchable' => true,
'sortable' => true, // New in v2026.3
]);
webpack.config.js to target v2026.3:
Encore
.enableSingleRuntimeChunk()
.cleanupOutputBeforeBuild()
.setPublicPath('/build/v2026')
.addEntry('pim-enrich-v2026', './assets/js/pim-enrich.js')
.enableReactPreset();
Use Case: Adding endpoints or modifying API responses.
# config/routes/your_api_v2026.yaml
your_api_product_v2026:
path: /api/v2026/product/custom
methods: [GET]
defaults:
_controller: your_bundle.controller.product::customAction
_format: json
_api_version: v2026 # Explicit versioning
Pim\Bundle\CatalogBundle\Controller\Api\Rest\ProductController:
use Akeneo\Tool\Component\Api\Versioning\VersionAwareInterface;
class CustomProductController extends ProductController implements VersionAwareInterface
{
public function getSupportedVersions(): array { return ['v2026']; }
// ...
}
getProduct() to inject v2026.3 logic (e.g., new ProductValue handling).use Akeneo\Platform\Bundle\ApiBundle\Security\Voter\ApiTokenVoter;
Use Case: Triggering actions on product updates.
ProductEvent interfaces).
// src/EventListener/ProductUpdateListener.php
use Akeneo\Tool\Component\Catalog\Event\ProductEvent;
class ProductUpdateListener implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
ProductEvent::PRE_SAVE => 'onProductUpdate',
ProductEvent::POST_SAVE => 'onProductSaved', // New in v2026.3
];
}
public function onProductUpdate(ProductEvent $event) { ... }
}
ProductEvent::PRE_VALIDATE, ProductEvent::POST_PUBLISH.ProductManagerInterface (updated in v2026.3):
$product = $this->productManager->find($id, $channel, $locale);
$product->setValues([...]); // New `setValues()` method
Database Migrations (v2026.3 Breaking Changes)
product_value table updates).php bin/console pim:installer:database:load --version=2026.3 --env=dev
var/data/doctrine/migrations/Version2026_3_*.php for changes.Caching Quirks (v2026.3 Cache API)
php bin/console cache:pool
How can I help you explore Laravel packages today?