In Symfony 4 I get:
Expected to find class "App\Controller\Quote\QuoteController" in file "/var/www/MyApp/src/Controller/Quote/QuoteController.php" while importing services from resource "../src/", but it was not found! Check the namespace prefix used with the resource in /var/www/MyApp/config/services.yaml (which is being imported from "/var/www/MyApp/src/Kernel.php").
I had following structure:
app
├── bin
├── config
├── src
│ ├── Controller
│ | ├── QuoteController.php
│ ├── Entity
│ | ├── Quote.php
│ ├── Repository
│ | ├── QuoteRepository.php
with for example QuoteControler being:
<?php
namespace App\Controller;
use App\Repository\QuoteRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class QuoteController extends AbstractController
{
#[Route('/quote', name: 'app_quote')]
public function index(QuoteRepository $quoteRepository)
: Response {
return $this->render('quote/index.html.twig', [
'controller_name' => 'QuoteController',
'quotes' => $quoteRepository->findAll(),
]);
}
}
And everything worked fine. I now changed my directory structure to this:
app
├── bin
├── config
├── src
│ ├── Controller
│ | ├── Quote
│ | | ├── QuoteController.php
│ ├── Entity
│ | ├── Quote
│ | | ├── Quote.php
│ ├── Repository
│ | ├── Quote
│ | | ├── QuoteRepository.php
And I got this error after deleting the contents of var/cache.
I even changed all use App\Repository\QuoteRepository; to use App\Repository\Quote\QuoteRepository; (and the similar statements in Quote.php and QuoteRepository) which didn't work.
What do I need to change to make it work?
services.yaml:
parameters:
services:
_defaults:
autowire: true
autoconfigure: true
App\:
resource: '../src/'
exclude:
- '../src/DependencyInjection/'
- '../src/Entity/'
- '../src/Kernel.php'
composer.json:
...
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
...
Could someone please help me, this is my first symfony project and for my limited understanding at this moment it should have something to do with the autoloaded namespace and/or the services declaration but I just couldn't find the values I need to provide.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With