Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Pim Community Dev Laravel Package

akeneo/pim-community-dev

View on GitHub
Deep Wiki
Context7
## 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
  • Use the dev-master branch for the latest development version (now aligned with v2026.3).
  • Note: The new release clarifies versioning in README.md—ensure you reference v2026.x constraints in composer.json:
    "require": {
        "akeneo/pim-community-dev": "^2026.3"
    }
    
  1. Install Dependencies

    composer install
    
    • Tip: Use --prefer-dist for faster installs:
      composer install --prefer-dist --no-dev
      
  2. Configure Environment

    • Copy .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)
      
    • Generate app key:
      php bin/console akeneo:install:framework
      
  3. First Use Case: Launch a Local PIM Instance

    php bin/console server:run
    
    • Access the PIM at http://localhost:8000 (admin credentials: admin/admin).
    • New: Verify version compatibility in the footer (should display v2026.3).

Where to Look First

  • Documentation:
  • Core Directories:
    • src/ – Core PIM logic (updated for v2026.3 features).
    • config/ – Bundle configurations (e.g., pim_catalog/v2026.yaml).
    • var/ – Runtime data (logs, cache, uploads).
  • Debugging Tools:
    • New: Version-aware commands:
      php bin/console pim:version:check  # Verify installed version
      php bin/console debug:config pim_catalog | grep "2026"
      

Implementation Patterns

1. Extending Catalog Structure (Updated for v2026.3)

Use Case: Adding custom attributes or attribute types.

  • Pattern: Leverage the new 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
    
  • Workflow:
    1. Define a new attribute in config/pim_catalog/attributes.yaml with versioned keys.
    2. Create a service implementing 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)
      }
      
    3. Register the service in services.yaml:
      services:
          your_bundle.attribute_type.custom_v2026:
              class: Your\Bundle\Service\CustomAttributeType
              tags: [pim_catalog.attribute.type]
      

2. Customizing Enrichment UI (v2026.3 Enhancements)

Use Case: Adding a tab or modifying the product grid.

  • Pattern: Use the new Webpack Encore v2026 integration (replaces old assets pipeline).
    {# templates/pim_enrich/product/_tab_custom_v2026.html.twig #}
    <div class="custom-tab pim-tab-v2026">
        {{ include('YourBundle:Product:_custom_content.html.twig') }}
    </div>
    
  • Integration Tips:
    • New: Use 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: Update webpack.config.js to target v2026.3:
      Encore
          .enableSingleRuntimeChunk()
          .cleanupOutputBeforeBuild()
          .setPublicPath('/build/v2026')
          .addEntry('pim-enrich-v2026', './assets/js/pim-enrich.js')
          .enableReactPreset();
      

3. API Extensions (v2026.3 API Changes)

Use Case: Adding endpoints or modifying API responses.

  • Pattern: Use the new API Platform v2026 integration.
    # 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
    
  • Workflow:
    1. Create a controller extending 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']; }
          // ...
      }
      
    2. Override methods like getProduct() to inject v2026.3 logic (e.g., new ProductValue handling).
    3. Secure endpoints with PIM’s updated API authentication:
      use Akeneo\Platform\Bundle\ApiBundle\Security\Voter\ApiTokenVoter;
      

4. Workflow Automation (v2026.3 Event System)

Use Case: Triggering actions on product updates.

  • Pattern: Use the revamped event system (v2026.3 introduces 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) { ... }
    }
    
  • Integration Tips:
    • New Events: ProductEvent::PRE_VALIDATE, ProductEvent::POST_PUBLISH.
    • Use ProductManagerInterface (updated in v2026.3):
      $product = $this->productManager->find($id, $channel, $locale);
      $product->setValues([...]);  // New `setValues()` method
      

Gotchas and Tips

Pitfalls

  1. Database Migrations (v2026.3 Breaking Changes)

    • Gotcha: v2026.3 introduces schema changes (e.g., product_value table updates).
    • Fix: Run the version-specific migration loader:
      php bin/console pim:installer:database:load --version=2026.3 --env=dev
      
    • Tip: Always check var/data/doctrine/migrations/Version2026_3_*.php for changes.
  2. Caching Quirks (v2026.3 Cache API)

    • Gotcha: PIM now uses Symfony Cache v6 with versioned keys.
    • Fix: Clear cache with:
      php bin/console cache:pool
      
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
cuci/prototurk-sdk-symfony
clementtalleu/easyadmin-markdown-bundle
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager