Why is Symfony UX-Autocomplete not working here? - symfony

My form works but auto-complete does not.
Anyone has an idea of what could be wrong?
Thanks and sorry for my english!
I tried adding "autocomplete" attribute:
<?php
namespace App\Form;
use App\Entity\Category;
use App\Entity\City;
use App\Entity\Location;
use App\Entity\User;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('username', TextType::class,[
'label'=>'Pseudo'
])
[...]
->add('city', EntityType::class,[
'class'=>City::class,
'choice_label'=>'name',
'label'=>'Ville',
'placeholder'=>'Selectionnez votre ville',
**'autocomplete'=>true**
]
)
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => User::class,
]);
}
}
As a result, my form still works, but there is no autocomplete:
I tried using AutocompleteField instead:
**->add('city',CityAutocompleteField::class)**
<?php
namespace App\Form;
use App\Entity\City;
use App\Repository\CityRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\UX\Autocomplete\Form\AsEntityAutocompleteField;
use Symfony\UX\Autocomplete\Form\ParentEntityAutocompleteType;
#[AsEntityAutocompleteField]
class CityAutocompleteField extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'class'=>City::class,
'choice_label'=>'name',
'placeholder'=>'Saisissez',
'query_builder' => function(CityRepository $cityRepository) {
return $cityRepository->createQueryBuilder('city');
},
//'security' => 'ROLE_SOMETHING',
]);
}
public function getParent(): string
{
return ParentEntityAutocompleteType::class;
}
}
The result is différent. I have the value stored in my database, but that's all. I can't select another value:
I followed the instructions given here( https://symfony.com/bundles/ux-autocomplete/current/index.html ), but don't why it is not ok here.
code in my browser:
`<select id="looking_for_city" name="looking_for[city]" required="required" data-controller="symfony--ux-autocomplete--autocomplete" data-symfony--ux-autocomplete--autocomplete-no-results-found-text-value="No results found" data-symfony--ux-autocomplete--autocomplete-no-more-results-text-value="No more results"><option value="" selected="selected">Selectionnez votre ville</option><option value="25000">Boudes(63)</option><option value="25001">La Bourboule(63)</option>...<option value="35853">Île de Clipperton(989)</option></select>`
controller.json:
{
"controllers": {
"#symfony/ux-autocomplete": {
"autocomplete": {
"enabled": true,
"fetch": "eager",
"autoimport": {
"tom-select/dist/css/tom-select.default.css": true
}
}
}
},
"entrypoints": []
}
composer.json:
{
"type": "project",
"license": "proprietary",
"minimum-stability": "stable",
"prefer-stable": true,
"require": {
"php": ">=8.0",
"ext-ctype": "*",
"ext-iconv": "*",
"beberlei/doctrineextensions": "^1.3",
"doctrine/annotations": "^1.0",
"doctrine/doctrine-bundle": "^2.7",
"doctrine/doctrine-migrations-bundle": "^3.2",
"doctrine/orm": "^2.13",
"knplabs/knp-paginator-bundle": "^5.9",
"phpdocumentor/reflection-docblock": "^5.3",
"phpstan/phpdoc-parser": "^1.8",
"sensio/framework-extra-bundle": "^6.1",
"symfony/apache-pack": "^1.0",
"symfony/asset": "5.4.*",
"symfony/console": "5.4.*",
"symfony/doctrine-messenger": "5.4.*",
"symfony/dotenv": "5.4.*",
"symfony/expression-language": "5.4.*",
"symfony/flex": "^1.17|^2",
"symfony/form": "5.4.*",
"symfony/framework-bundle": "5.4.*",
"symfony/http-client": "5.4.*",
"symfony/intl": "5.4.*",
"symfony/mailer": "5.4.*",
"symfony/mime": "5.4.*",
"symfony/monolog-bundle": "^3.0",
"symfony/notifier": "5.4.*",
"symfony/process": "5.4.*",
"symfony/property-access": "5.4.*",
"symfony/property-info": "5.4.*",
"symfony/proxy-manager-bridge": "5.4.*",
"symfony/runtime": "5.4.*",
"symfony/security-bundle": "5.4.*",
"symfony/serializer": "5.4.*",
"symfony/string": "5.4.*",
"symfony/translation": "5.4.*",
"symfony/twig-bundle": "5.4.*",
"symfony/ux-autocomplete": "^2.4",
"symfony/validator": "5.4.*",
"symfony/web-link": "5.4.*",
"symfony/webpack-encore-bundle": "^1.16",
"symfony/yaml": "5.4.*",
"twig/extra-bundle": "^2.12|^3.0",
"twig/twig": "^2.12|^3.0"
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.4",
"fakerphp/faker": "^1.20",
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "5.4.*",
"symfony/css-selector": "5.4.*",
"symfony/debug-bundle": "5.4.*",
"symfony/maker-bundle": "^1.0",
"symfony/phpunit-bridge": "^6.1",
"symfony/stopwatch": "5.4.*",
"symfony/web-profiler-bundle": "5.4.*"
},
"config": {
"allow-plugins": {
"composer/package-versions-deprecated": true,
"symfony/flex": true,
"symfony/runtime": true
},
"optimize-autoloader": true,
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php72": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"#auto-scripts"
],
"post-update-cmd": [
"#auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "5.4.*"
}
}
}
package.json:
{
"devDependencies": {
"#babel/core": "^7.17.0",
"#babel/preset-env": "^7.16.0",
"#hotwired/stimulus": "^3.0.0",
"#symfony/stimulus-bridge": "^3.2.0",
"#symfony/ux-autocomplete": "file:vendor/symfony/ux-autocomplete/assets",
"#symfony/webpack-encore": "^4.0.0",
"core-js": "^3.23.0",
"regenerator-runtime": "^0.13.9",
"tom-select": "^2.0.1",
"webpack": "^5.74.0",
"webpack-cli": "^4.10.0",
"webpack-notifier": "^1.15.0"
},
"license": "UNLICENSED",
"private": true,
"scripts": {
"dev-server": "encore dev-server",
"dev": "encore dev",
"watch": "encore dev --watch",
"build": "encore production --progress"
}
}

I had the same problem, or at least it was very similar. I solved it by adding the following code before </head> in templates\base.html.twig:
<!--Symfony UX -->
{{ encore_entry_link_tags('app') }}
{{ encore_entry_script_tags('app') }}
I hope this helps.

Related

PHPUnit; API Platform v. 3; "Error: Xdebug has detected a possible infinite loop"

I upgraded my API Platform project from v. 2.7 to v. 3.
Using the version 2.7 I was able to run my unit tests without problems. But now after upgrading to version 3, I receive the following error:
Error : Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '256' frames
Console output:
/PhpstormProjects/Members/lloyd-members-api/vendor/symfony/dependency-injection/Compiler/ResolveNoPreloadPass.php:81
/PhpstormProjects/Members/lloyd-members-api/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php:91
/PhpstormProjects/Members/lloyd-members-api/vendor/symfony/dependency-injection/Compiler/ResolveNoPreloadPass.php:92
/PhpstormProjects/Members/lloyd-members-api/vendor/symfony/dependency-injection/Compiler/ResolveNoPreloadPass.php:40
/PhpstormProjects/Members/lloyd-members-api/vendor/symfony/dependency-injection/Compiler/Compiler.php:73
/PhpstormProjects/Members/lloyd-members-api/vendor/symfony/dependency-injection/ContainerBuilder.php:716
/PhpstormProjects/Members/lloyd-members-api/vendor/symfony/http-kernel/Kernel.php:538
PhpstormProjects/Members/lloyd-members-api/vendor/symfony/http-kernel/Kernel.php:767
/PhpstormProjects/Members/lloyd-members-api/vendor/symfony/http-kernel/Kernel.php:128
/PhpstormProjects/Members/lloyd-members-api/vendor/symfony/framework-bundle/Test/KernelTestCase.php:72
/PhpstormProjects/Members/lloyd-members-api/vendor/api-platform/core/src/Symfony/Bundle/Test/ApiTestCase.php:49
/PhpstormProjects/Members/lloyd-members-api/tests/EasyTest.php:16
I simplified the test to the minimum:
<?php
namespace App\Tests;
use ApiPlatform\Symfony\Bundle\Test\ApiTestCase;
class EasyTest extends ApiTestCase
{
public function testSomething(): void
{
$this->assertTrue(true);
}
public function testProblem(): void
{
self::createClient();
$this->assertTrue(true);
}
}
testSomething() runs as it should.
testProblem() results in the error.
This is my composer.json
{
"type": "project",
"license": "proprietary",
"minimum-stability": "stable",
"prefer-stable": true,
"require": {
"php": ">=8.1",
"ext-ctype": "*",
"ext-curl": "*",
"ext-exif": "*",
"ext-gd": "*",
"ext-iconv": "*",
"api-platform/core": "^3.0",
"composer/package-versions-deprecated": "1.11.99.4",
"doctrine/annotations": "^1.0",
"doctrine/doctrine-bundle": "^2.7",
"doctrine/doctrine-migrations-bundle": "^3.2",
"doctrine/orm": "^2.13",
"imagine/imagine": "^1.3",
"jonasarts/phpqrcode-bundle": "^6.0",
"lexik/jwt-authentication-bundle": "^2.15",
"nelmio/cors-bundle": "^2.2",
"phpdocumentor/reflection-docblock": "^5.3",
"symfony-bundles/json-request-bundle": "^4.0",
"symfony/apache-pack": "^1.0",
"symfony/asset": "6.1.*",
"symfony/console": "6.1.*",
"symfony/dotenv": "6.1.*",
"symfony/expression-language": "6.1.*",
"symfony/flex": "^2",
"symfony/form": "6.1.*",
"symfony/framework-bundle": "6.1.*",
"symfony/http-client": "6.1.*",
"symfony/mailer": "6.1.*",
"symfony/monolog-bundle": "^3.7",
"symfony/property-access": "6.1.*",
"symfony/property-info": "6.1.*",
"symfony/proxy-manager-bridge": "6.1.*",
"symfony/requirements-checker": "^2.0",
"symfony/runtime": "6.1.*",
"symfony/security-bundle": "6.1.*",
"symfony/serializer": "6.1.*",
"symfony/twig-bundle": "6.1.*",
"symfony/uid": "6.1.*",
"symfony/validator": "6.1.*",
"symfony/yaml": "6.1.*",
"twig/cssinliner-extra": "^3.3",
"twig/extra-bundle": "^3.3",
"twig/twig": "^2.12|^3.0",
"vich/uploader-bundle": "^1.19"
},
"config": {
"optimize-autoloader": true,
"preferred-install": {
"*": "dist"
},
"sort-packages": true,
"allow-plugins": {
"composer/package-versions-deprecated": true,
"symfony/flex": true,
"symfony/runtime": true
}
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php72": "*",
"symfony/polyfill-php73": "*",
"symfony/polyfill-php74": "*",
"symfony/polyfill-php80": "*",
"symfony/polyfill-php81": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd",
"requirements-checker": "script"
},
"post-install-cmd": [
"#auto-scripts"
],
"post-update-cmd": [
"#auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "6.1.*"
}
},
"require-dev": {
"hautelook/alice-bundle": "^2.10",
"justinrainbow/json-schema": "^5.2",
"phpstan/phpstan": "^1.4",
"phpunit/phpunit": "^9.5",
"rector/rector": "^0.12.21",
"roave/security-advisories": "dev-latest",
"symfony/browser-kit": "6.1.*",
"symfony/css-selector": "6.1.*",
"symfony/debug-bundle": "6.1.*",
"symfony/maker-bundle": "^1.36",
"symfony/phpunit-bridge": "^6.1",
"symfony/stopwatch": "6.1.*",
"symfony/var-dumper": "6.1.*",
"symfony/web-profiler-bundle": "6.1.*"
}
}
Composer is up to date (composer up).
Composer recipes are all up to date.
Can't find the problem. Removed vendor folder. Same problem.
I can run the tests with the following flag:
-dxdebug.mode=debug
In this case everything works fine.
Thank you!

Try to update Sonata, have error with jms-serializer

I need to update my bundles for security reasons but when i try to do a composer update, i have a lot of problem with sonata.
First, SonataCore, sonataMedia and JMS-serializer disappear.
bundles.php
If a tried to reinstall SonataCore with composer require sonata-project/core-bundle
i have this error: Problem 1 - Root composer.json requires sonata-project/core-bundle ^3.20 -> satisfiable by sonata-project/core-bundle[3.20.0]. - sonata-project/core-bundle 3.20.0 requires sonata-project/form-extensions ^0.1 -> found sonata-project/form-extensions[0.1.0, 0.1.1, 0.1.2] but the package is fixed to 1.16.1 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
If a tried to reinstall SonataMedia with composer require sonata-project/media-bundle,
i have this error: Problem 1 - sonata-project/media-bundle[4.1.0, ..., 4.1.5] require doctrine/persistence ^2.0 -> found doctrine/persistence[2.0.0, ..., 2.5.3] but the package is fixed to 1.3.8 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command. - Root composer.json requires sonata-project/media-bundle ^4.1 -> satisfiable by sonata-project/media-bundle[4.1.0, ..., 4.1.5].
I can install JMS-Serializer but then, i have an error with jms_serializer.handler_registry even though i use it nowhere in my code (but it appears in the cache).
My composer.json :
"type": "project",
"license": "proprietary",
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"ext-json": "*",
"composer/package-versions-deprecated": "1.11.99.5",
"dekalee/mailjet-bundle": "^2.1",
"doctrine/common": "^2",
"doctrine/doctrine-bundle": "^2",
"doctrine/doctrine-migrations-bundle": "^2",
"doctrine/orm": "^2",
"friendsofsymfony/rest-bundle": "^2.6",
"friendsofsymfony/user-bundle": "~2.0",
"guzzlehttp/guzzle": "^6.5",
"hslavich/oneloginsaml-bundle": "^1.4",
"jmose/command-scheduler-bundle": "^2.2",
"jms/serializer-bundle": "^4.0",
"michaeldegroot/doctrine-encrypt-bundle": "^4.0",
"nelmio/api-doc-bundle": "^3.5",
"paragonie/halite": "^4",
"phpoffice/phpspreadsheet": "^1.10",
"sonata-project/admin-bundle": "^3.56",
"sonata-project/doctrine-orm-admin-bundle": "^3.12",
"sonata-project/formatter-bundle": "^4.1",
"sonata-project/intl-bundle": "^2.7",
"sonata-project/user-bundle": "^4.5",
"symfony/console": "4.4.*",
"symfony/dotenv": "4.4.*",
"symfony/flex": "^1.3.1",
"symfony/framework-bundle": "4.4.*",
"symfony/mailer": "4.4.*",
"symfony/mime": "4.4.*",
"symfony/monolog-bundle": "^3.5",
"symfony/serializer": "4.4.*",
"symfony/swiftmailer-bundle": "^3.4",
"symfony/translation": "4.4.*",
"symfony/twig-bundle": "4.4.*",
"symfony/yaml": "4.4.*",
"twig/extra-bundle": "^2.12|^3.0",
"twig/twig": "^2.12|^3.0",
"vich/uploader-bundle": "^1.12"
},
"require-dev": {
"sonata-project/easy-extends-bundle": "^2.5",
"symfony/debug-bundle": "4.4.*",
"symfony/maker-bundle": "^1.14",
"symfony/stopwatch": "4.4.*",
"symfony/web-profiler-bundle": "4.4.*"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true,
"allow-plugins": {
"ocramius/package-versions": true,
"symfony/flex": true
}
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"#auto-scripts"
],
"post-update-cmd": [
"#auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": "true",
"require": "4.4.*"
}
}
}
I'm a novice in project management so i have no idea how to resolve all of this, i hope you can help me.

the PHPUnit test of a uri fails while the request succeeded in the browser

My application is on Symfony 4.4, PHP 7.4.
My composer.json :
{
"name": "saro0h/to-do-list",
"type": "project",
"license": "proprietary",
"require": {
"php": ">=7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"composer/package-versions-deprecated": "^1.11",
"doctrine/annotations": "^1.11",
"doctrine/doctrine-bundle": "^2.1",
"doctrine/doctrine-migrations-bundle": "^3.0",
"doctrine/orm": "^2.7",
"sensio/framework-extra-bundle": "^5.6",
"symfony/apache-pack": "^1.0",
"symfony/asset": "4.4.*",
"symfony/console": "4.4.*",
"symfony/dotenv": "4.4.*",
"symfony/flex": "^1.3.1",
"symfony/form": "4.4.*",
"symfony/framework-bundle": "4.4.*",
"symfony/mailer": "4.4.*",
"symfony/monolog-bundle": "^3.6",
"symfony/security-bundle": "4.4.*",
"symfony/security-csrf": "4.4.*",
"symfony/twig-bundle": "4.4.*",
"symfony/validator": "4.4.*",
"symfony/yaml": "4.4.*"
},
"require-dev": {
"phpstan/phpstan": "^0.12.54",
"symfony/browser-kit": "4.4.*",
"symfony/css-selector": "4.4.*",
"symfony/maker-bundle": "^1.23",
"symfony/phpunit-bridge": "^5.1",
"symfony/stopwatch": "^4.4",
"symfony/web-profiler-bundle": "^4.4"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"#auto-scripts"
],
"post-update-cmd": [
"#auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.4.*"
}
}
}
There is the method controller I want to test:
<?php
namespace App\Controller;
use App\Entity\User;
use App\Form\UserType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
class UserController extends AbstractController
{
/**
* list all users.
*
* #Route("/users", name="user_list")
*
* #return Response
*/
public function list(): Response
{
return $this->render('user/list.html.twig', ['users' => $this->getDoctrine()->getRepository(User::class)->findAll()]);
}
}
Then a test it with PHPUnit
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
/**
* #internal
* #coversNothing
*/
class UserControllerTest extends WebTestCase
{
/**
* testIndex.
*/
public function testUserList(): void
{
$client = static::createClient();
$client->request('GET', '/users');
$this->assertTrue($client->getResponse()->isSuccessful());
}
}
In the browser, the request is successfull (The page display without error, with 200 HTTP code status, no errors in the profiler)
But, when I run PHPUnit, the test fails with $client->getResponse()->getStatusCode() = 500 !!!!
How can I fix that ?
Thank you for your answers
I solved my problem !
When a had the idea to display the page with the test environment, I get the error:
An exception occurred in driver: SQLSTATE[HY000] [2002] Aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée.
So I solved the problem creating a database for the test environment, in defined my .env.test.

! Fatal error: Uncaught Error: Class 'Psr\Log\LogLevel'

In my symfony project I can't make a composer require psr/log. I got this error message:
!! Fatal error: Uncaught Error: Class 'Psr\Log\LogLevel' not found in C:\wamp64\ww
w\my-project\vendor\symfony\debug\Debug.php:53
!! Stack trace:
!! #0 C:\wamp64\www\my-project\bin\console(32): Symfony\Component\Debug\Debug::ena
ble()
!! #1 {main}
!! thrown in C:\wamp64\www\my-project\vendor\symfony\debug\Debug.php on line 5
3
!!
ok so , i deleted all in vendor directory with "composer install"
ok yes,
php {
"type": "project",
"license": "proprietary",
"require": {
"php": "^7.1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"sensio/framework-extra-bundle": "^5.1",
"symfony/asset": "4.3.*",
"symfony/console": "4.3.*",
"symfony/dotenv": "4.3.*",
"symfony/expression-language": "4.3.*",
"symfony/flex": "^1.1",
"symfony/form": "4.3.*",
"symfony/framework-bundle": "4.3.*",
"symfony/http-client": "4.3.*",
"symfony/intl": "4.3.*",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "*",
"symfony/process": "4.3.*",
"symfony/security-bundle": "4.3.*",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/translation": "4.3.*",
"symfony/twig-bundle": "4.3.*",
"symfony/validator": "4.3.*",
"symfony/web-link": "4.3.*",
"ext-http": "*",
"symfony/yaml": "4.3.*"
},
"require-dev": {
"symfony/debug-pack": "*",
"symfony/maker-bundle": "^1.0",
"symfony/profiler-pack": "*",
"symfony/test-pack": "*",
"symfony/web-server-bundle": "4.3.*"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"paragonie/random_compat": "2.*",
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"#auto-scripts"
],
"post-update-cmd": [
"#auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false,
"require": "4.3.*"
}
}
}

Imports are highlighted like the packages do not exist (Symfony 4)

I'm working on a Symfony 4 project with PhpStorm 2018.1
It has become common for me to see the use declarations highlighted as if they haven't been installed with composer.
The class belongs to a package which is not directly required in your
composer.json. Please add the package into your composer.json.
The following are installed and show in my composer.json file:
stof/doctrine-extensions-bundle
symfony/orm-pack
Am I missing something here or is this a PhpStorm issue?
composer.json
{
"type": "project",
"license": "proprietary",
"platform": {
"php": "7.1"
},
"require": {
"php": "^7.1",
"ext-iconv": "*",
"sensio/framework-extra-bundle": "^5.1",
"stof/doctrine-extensions-bundle": "^1.3",
"symfony/asset": "^4.1",
"symfony/console": "^4.1",
"symfony/expression-language": "^4.1",
"symfony/flex": "^1.0",
"symfony/form": "^4.1",
"symfony/framework-bundle": "^4.1",
"symfony/lts": "^4#dev",
"symfony/maker-bundle": "^1.5",
"symfony/monolog-bundle": "^3.3",
"symfony/orm-pack": "^1.0",
"symfony/process": "^4.1",
"symfony/profiler-pack": "^1.0",
"symfony/security-bundle": "^4.1",
"symfony/security-guard": "^4.1",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/twig-bundle": "^4.1",
"symfony/validator": "^4.1",
"symfony/var-dumper": "^4.1",
"symfony/web-link": "^4.1",
"symfony/webpack-encore-pack": "^1.0",
"symfony/yaml": "^4.1"
},
"require-dev": {
"doctrine/doctrine-fixtures-bundle": "^3.0",
"symfony/debug-pack": "*",
"symfony/dotenv": "^4.1",
"symfony/test-pack": "^1.0",
"symfony/web-server-bundle": "^4.1"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"#auto-scripts"
],
"post-update-cmd": [
"#auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": true
}
}
}
What this message is telling you is that the highlighted classes are only available because the packages containing them have been installed as dependencies of some other packages you require (in this case it's probably because of the symfony/orm-pack package). Generally, relying on such transitive dependencies is not something I would do. Though for the Symfony pack that's something acceptable IMO.
If you are still concerned about this message, you can get rid of it by unpacking symfony/orm-pack (see also http://fabien.potencier.org/symfony4-unpack-the-packs.html):
$ composer unpack symfony/orm-pack
Your import path is correct, your composer.json looks good also.
Try to delete the vendor directory then try to launch composer install.
Try to install Symfony Plugin in your PHPStorm.
EDIT
Do you have the line below in your config/bundles.php ?
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],

Resources