简体   繁体   中英

Using Solarium with Solr

I'm trying to use Solarium (NelmioSolariumBundle) with Solr and I have this error message:

Service "solarium.client" not found: even though it exists in the app's container, the container
inside "App\Controller\solariumController" is a smaller service locator that only knows about the
"doctrine", "form.factory", "http_kernel", "parameter_bag", "request_stack", "router",
"security.authorization_checker", "security.csrf.token_manager", "security.token_storage", "session"
and "twig" services. Try using dependency injection instead.

Here is my controller

<?php


namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class solariumController extends AbstractController
{

    /**
     * @Route ("/solariums", name="solariums")
     */
    public function solariumSearch(){

        $client = $this->get('solarium.client');
        $select = $client->createSelect();
        $select->setQuery('brandon');
        $results = $client->select($select);

        return $this->render('pages/solarium.html.twig',[
            '$results'
        ]);

    }
}

Do you have any idea please?

Thanks !

Inject client in constructor:

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class solariumController extends AbstractController
{
    /** @var \Solarium\Client */
    private $client;

    public function __construct(\Solarium\Client $client) {
       $this->client = $client;
    }

    /**
     * @Route ("/solariums", name="solariums")
     */
    public function solariumSearch() {

        $select = $this->client->createSelect();
        $select->setQuery('brandon');
        $results = $this->client->select($select);

        return $this->render('pages/solarium.html.twig',[
            '$results'
        ]);

    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM