Служба «Doctix.twig_extension» зависит от несуществующего «запроса» службы в Symfony 3 - PullRequest
0 голосов
/ 01 декабря 2018

Здесь я создал сервис для управления моей звездной нотацией, но когда я хочу протестировать, у меня появляется следующее сообщение об ошибке: Сервис «Doctix.twig_extension» зависит от несуществующего «запроса» службы.Я попробовал несколько предложений, но ошибка все еще сохраняется, и я не могу получить доступ ни к одной из своих страниц.Есть мой сервис:

Сервис

 Doctix.twig_extension:
     class: Doctix\PatientBundle\Twig\StarRatingExtension
     arguments: ["@doctrine", "@requestStack"]
     tags:
         - { name: twig.extension }

Класс StarRatingExtension

   <?php
namespace Doctix\PatientBundle\Twig;

use Symfony\Bridge\Doctrine\RegistryInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Cookie;

 class StarRatingExtension extends \Twig_Extension
{
  protected $doctrine;
  private $request;

public function __construct(RegistryInterface $doctrine, RequestStack $requestStack)
{
    $this->doctrine = $doctrine;
    $this->requestStack = $requestStack;
}

public function getFunctions() {
  return array(
       'starBar' => new \Twig_Function_Method($this, 'myStarBar'),
  );
}

public function myStarBar($numStar, $medecinId, $starWidth) {

    $cookies = $this->requestStack->cookies->get('symfonyRatingSystem'.$medecinId);

    $nbrPixelsInDiv = $numStar * $starWidth; // Calcule la hauteur de la div en pixel

    $query = $this->doctrine->getRepository('DoctixPatientBundle:Rating')->findOneBy(array('medecin' => $medecinId));

    if (isset($query)) {
    $average = round($query->getRate()/$query->getNbrrate(), 2);
    $nbrRate = $query->getNbrrate();
    } else {
        $average = 0;
        $nbrRate = 0;
    }

    //nombre de pixel à colorier (in yellow)

    $numEnlightedPX = round($nbrPixelsInDiv * $average / $numStar, 0);

    $getJSON = array('numStar' => $numStar, 'medecinId' => $medecinId); // Nous créons un JSON avec le nombre d'étoiles et l'id du doc
    $getJSON = json_encode($getJSON);

    $starBar = '<div id="group'.$medecinId.'">';
    $starBar .= '<div class="star_bar" style="width:'.$nbrPixelsInDiv.'px; height:'.$starWidth.'px; background: linear-gradient(to right, #ffc600 0px,#ffc600 '.$numEnlightedPX.'px,#ccc '.$numEnlightedPX.'px,#ccc '.$nbrPixelsInDiv.'px);" rel='.$getJSON.'>';

    for ($i=1; $i<=$numStar; $i++) {

        $starBar .= '<div title="'.$i.'/'.$numStar.'" id="'.$i.'" class="star"';
        if( !$cookies )
                $starBar .= ' onmouseover="overStar('.$medecinId.', '.$i.', '.$numStar.');" onmouseout="outStar('.$medecinId.', '.$i.', '.$numStar.');" onclick="rateMedia('.$medecinId.', '.$i.', '.$numStar.', '.$starWidth.');"';
        $starBar .= '></div>';
    }
    $starBar .= '</div>';
    $starBar .= '<div class="resultMedia'.$medecinId.'" style="font-size: small; color: grey">'; // Montre le score et le nombre de votes We show the rate score and number of rates
    if (!isset($query)) $starBar .= 'Pas encore de vote';
    else $starBar .= 'Rating: ' . $average . '/' . $numStar . ' (' . $nbrRate . ' votes)';
    $starBar .= '</div>';
    $starBar .= '<div class="box'.$medecinId.'"></div>';
    $starBar .= '</div>';

    return $starBar;
}

  public function getName()
  {
     return 'StarRating_extension';
  }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...