Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sylius install crashes because "No identifier defined"

I'm trying to install Sylius 1.8 on ubuntu and I follow installation guide when I run composer install I get following error:

Run composer recipes at any time to see the status of your Symfony recipes.

Executing script cache:clear [KO]
 [KO]
Script cache:clear returned with error code 1
!!  
!!   // Clearing the cache for the prod environment with debug                      
!!   // false                                                                       
!!  
!!  
!!  In FileLoader.php line 180:
!!                                                                                 
!!    No identifier defined "Sylius\Bundle\ApiBundle\Command\RegisterShopUser". Y  
!!    ou should add #[\ApiPlatform\Core\Annotation\ApiProperty(identifier: true)]  
!!    " on the property identifying the resource." in . (which is being imported   
!!    from "/srv/sylius/vendor/sylius/sylius/src/Sylius/Bundle/ApiBundle/Resource  
!!    s/config/routing.yml"). Make sure there is a loader supporting the "api_pla  
!!    tform" type.                                                                 
!!                                                                                 
!!  
!!  In IdentifiersExtractor.php line 65:
!!                                                                                 
!!    No identifier defined "Sylius\Bundle\ApiBundle\Command\RegisterShopUser". Y  
!!    ou should add #[\ApiPlatform\Core\Annotation\ApiProperty(identifier: true)]  
!!    " on the property identifying the resource."                                 
!!                                                                                 
!!  
!!  cache:clear [--no-warmup] [--no-optional-warmers] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command>
!!  
!!  
Script @auto-scripts was called via post-install-cmd

I have also used Sylius docker but the result was the same, it seems there is an issue with Api-Platform.

like image 378
Monsieur Alireza Avatar asked Jan 24 '21 09:01

Monsieur Alireza


Video Answer


1 Answers

Sylius uses Api-Platform, and very recently version 2.6 of Api-Platform was released.

Since this release, all API resources —including custom DTOs— need to have an "identifier", as other users are finding out.

There already exists a PR to fix this to make Sylius compatible with Api-Platform 2.6.0.

If you are installing a brand new project, you could do the following to install Sylius from scratch:

composer create-project sylius/sylius-standard app_dir --no-install --no-scripts 
cd app_dir
composer require api-platform/core:2.5.9 --no-update 
composer install

If you have an existing project you need to fix before updating (even one you've installed following the instructions on the previous step), you should add this to the conflict key of your composer.json:

{
    "conflict":  {
        "api-platform/core": ">=2.6.0"
    }
}

Although you should monitor the development of Sylius to remove this line once is no longer needed.

like image 161
yivi Avatar answered Oct 17 '22 01:10

yivi