Попытка вызвать неопределенный метод с именем «getPosition» класса «App \ Controller \ ApiController» - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь создать экземпляр объекта домена в моем контроллере, но получаю эту ошибку "Попытка вызова функции" getPosition "из пространства имен" App \ Controller "".

Я надеюсь, что вы можете мне помочь, с этой проблемой. Это я ошибка

Но я получил и установил, почему он не находит его?

ApiController

    <?php

namespace App\Controller;

use App\Repository\DomainRepository;
use FOS\RestBundle\Controller\AbstractFOSRestController;
use GeoIp2\Database\Reader;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mime\Email;
use Symfony\Component\Routing\Annotation\Route;
use FOS\RestBundle\Controller\Annotations as Rest;
use Symfony\Component\HttpFoundation\Request;
use FOS\RestBundle\View\View;
use Symfony\Component\Mailer\MailerInterface;
use App\Entity\Domain;

/**
 * @Route("/api")
 */
class ApiController extends AbstractFOSRestController
{
    /**
     * @throws
     * @return JsonResponse
     * @Rest\Get("/domain", name="get_domain")
     * @Rest\Get("/domain/{blocked}")
     * @param Reader $reader
     * @param Request $request
     * @param DomainRepository $domainRepository
     */
    public function getDomain(Request $request, Reader $reader, DomainRepository $domainRepository, MailerInterface $mailer): JsonResponse
    {

        $record = $reader->country('87.99.79.119');
        $code = $record->country->isoCode;
        $domain = $domainRepository->getDomain($code);
        $ip = $request->getClientIp();
        if ($request->isXmlHttpRequest())
        $domain = $domainRepository->getDomain($code);
        $position = getPosition();
//
//        $email = (new Email())
//            ->from('noreply@makaobet.com')
//            ->to('support@makaobet.com')
////            ->cc('cc@example.com')
////            ->bcc('bcc@example.com')
////            ->replyTo('fabien@example.com')
////            ->priority(Email::PRIORITY_HIGH)
//            ->subject('Domain Error')
//            ->html($domain->getDomain() . ' have problem!');
//
//        $mailer->send($email);

        return new JsonResponse(
            [
                'status' => 'ok',
                'domain' => $domain->getDomainName()
            ], 200);
    }
}

Доменная сущность

    <?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;


/**
 * @ORM\Entity(repositoryClass="App\Repository\DomainRepository")
 */
class Domain
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255)   
     */
    private $domain_name;

    /**
     * @ORM\Column(type="array")
     */ 
    private $blocked_countries;

    /**
     * @Gedmo\SortablePosition
     * @ORM\Column(type="integer")
     */
    private $position;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getDomainName(): ?string
    {
        return $this->domain_name;
    }

    public function setDomainName(string $domain_name): self
    {
        $this->domain_name = $domain_name;

        return $this;
    }

    public function getBlockedCountries(): ?array
    {
        return $this->blocked_countries;
    }

    public function setBlockedCountries(array $blocked_countries): self
    {
        $this->blocked_countries = $blocked_countries;

        return $this;
    }

    public function getPosition(): ?int
    {
        return $this->position;
    }

    public function setPosition($position): self
    {
        $this->position = $position;
        return $this;
    }


}

Как я могу сделать эту работу ???

1 Ответ

0 голосов
/ 14 апреля 2020

Чтобы получить эту буксировочную работу, все, что вы вызываете из хранилища, должно быть примерно таким:

$domainRepository->getSomethig();

и таким же для установки:

$domainRepository->setSomething("some Value");

В вашем случае:

$position = $domainRepository->getPosition();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...