Задать вопрос
  • Нерешимая проблема с Symfony - как решить?

    w_b_x
    @w_b_x Автор вопроса
    Максим Федоров, все хорошо, спасибо за участие :)
  • Нерешимая проблема с Symfony - как решить?

    w_b_x
    @w_b_x Автор вопроса
    BoShurik, Спасибо огромное, выручили
  • Нерешимая проблема с Symfony - как решить?

    w_b_x
    @w_b_x Автор вопроса
    BoShurik, Всё работает, спасибо! А можно как-то этот процесс автоматизировать? А то для каждого Entity не хочется редактировать Repository и services.xml, было бы здоровски, если можно
  • Нерешимая проблема с Symfony - как решить?

    w_b_x
    @w_b_x Автор вопроса
    BoShurik, Теперь появилась другая

    AccountRepository.php:
    namespace App\Repository;
    
    use App\Entity\Account;
    use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
    use Symfony\Bridge\Doctrine\RegistryInterface;
    
    /**
     * @method Account|null find($id, $lockMode = null, $lockVersion = null)
     * @method Account|null findOneBy(array $criteria, array $orderBy = null)
     * @method Account[]    findAll()
     * @method Account[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
     */
    class AccountRepository extends \Doctrine\ORM\EntityRepository
    {
        public function __construct($registry)
        {
    
        }


    Fatal error: Uncaught Error: Call to a member function getUnitOfWork() on null in папка_проекта\vendor\doctrine\orm\lib\Doctrine\ORM\EntityRepository.php:194
    Stack trace:
    #0 папка_проекта\worker\test.php(22): Doctrine\ORM\EntityRepository->findOneBy(Array)
    #1 {main}
      thrown in папка_проекта\vendor\doctrine\orm\lib\Doctrine\ORM\EntityRepository.php on line 194
  • Нерешимая проблема с Symfony - как решить?

    w_b_x
    @w_b_x Автор вопроса
    Попробовал поменять, почистил папку кеша, всё равно получается ошибка:
    Fatal error: Uncaught TypeError: Argument 1 passed to App\Repository\AccountRepository::__construct() must be an instance of Symfony\Bridge\Doctrine\RegistryInterface, instance of Doctrine\ORM\EntityManager given, called in папка_проекта\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php on line 68 and defined in папка_проекта\src\Repository\AccountRepository.php:17
    Stack trace:
    #0 папка_проекта\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php(68): App\Repository\AccountRepository->__construct(Object(Doctrine\ORM\EntityManager), Object(Doctrine\ORM\Mapping\ClassMetadata))
    #1 папка_проекта\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php(50): Doctrine\ORM\Repository\DefaultRepositoryFactory->createRepository(Object(Doctrine\ORM\EntityManager), 'App\\Entity\\Acco...')
    #2 папка_проекта\vendor\doctrine\orm\lib\Doctrine\ORM in папка_проекта\src\Repository\AccountRepository.php on line 17


    Вышло так:
    namespace App\Repository;
    
    use App\Entity\Account;
    use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
    use Symfony\Bridge\Doctrine\RegistryInterface;
    
    /**
     * @method Account|null find($id, $lockMode = null, $lockVersion = null)
     * @method Account|null findOneBy(array $criteria, array $orderBy = null)
     * @method Account[]    findAll()
     * @method Account[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
     */
    class AccountRepository extends \Doctrine\ORM\EntityRepository
    {
        public function __construct(RegistryInterface $registry)
        {
            parent::__construct($registry, Account::class);
        }
  • Как решить ошибку "must be an instance of Symfony...."?

    w_b_x
    @w_b_x Автор вопроса
    padlyuck, Очень странно, теперь ломается код всегда. Пересоздал проект, по-новой установил Symfony, по-новой создал 1 объект account через make:entity и попробовал код
    папка проекта\worker\test.php:
    <?php
    require __DIR__.'/../vendor/autoload.php';
    use Doctrine\ORM\Tools\Setup;
    use Doctrine\ORM\EntityManager;
    use App\Entity\Account; // Подключаю объект account, который прекрасно работает из Symfony
    $isDevMode = true;
    $entitiesPaths = array(__DIR__.'/../src/Entity'); //Путь до папки /src/Entity
    $dbParams = array(
        'dbname' => 'база',
        'user' => 'логин',
        'password' => 'пароль',
        'host' => '127.0.0.1',
        'driver' => 'pdo_mysql');
    $config = Setup::createAnnotationMetadataConfiguration($entitiesPaths, $isDevMode, null, null, false);
    $em = EntityManager::create($dbParams, $config);
    $id = 9; // для примера
    $account = $em->getRepository(Account::class)->findOneBy([
        'id'=>$id,
    ]);
    var_dump($account);


    Всё равно выходит ошибка:
    Fatal error: Uncaught TypeError: Argument 1 passed to App\Repository\AccountRepository::__construct() must be an instance of Symfony\Bridge\Doctrine\RegistryInterface, instance of Doctrine\ORM\EntityManager given, called in _папка_проекта_\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php on line 68 and defined in _папка_проекта_\src\Repository\AccountRepository.php:17
    Stack trace:
    #0 _папка_проекта_\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php(68): App\Repository\AccountRepository->__construct(Object(Doctrine\ORM\EntityManager), Object(Doctrine\ORM\Mapping\ClassMetadata))
    #1 _папка_проекта_\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php(50): Doctrine\ORM\Repository\DefaultRepositoryFactory->createRepository(Object(Doctrine\ORM\EntityManager), 'App\\Entity\\Acco...')
    #2 _папка_проекта_\vendor\doctrine\orm\lib\Doctrine\ORM in _папка_проекта_\src\Repository\AccountRepository.php on line 17
  • Как решить ошибку "must be an instance of Symfony...."?

    w_b_x
    @w_b_x Автор вопроса
    padlyuck, Это снова Вы, мой спаситель)

    Конечно:
    App\Repository\AccountRepository.php:
    <?php
    
    namespace App\Repository;
    
    use App\Entity\Account;
    use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
    use Symfony\Bridge\Doctrine\RegistryInterface;
    
    /**
     * @method Account|null find($id, $lockMode = null, $lockVersion = null)
     * @method Account|null findOneBy(array $criteria, array $orderBy = null)
     * @method Account[]    findAll()
     * @method Account[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
     */
    class AccountRepository extends ServiceEntityRepository
    {
        public function __construct(RegistryInterface $registry)
        {
            parent::__construct($registry, Account::class);
        }
    
        // /**
        //  * @return Account[] Returns an array of Account objects
        //  */
        /*
        public function findByExampleField($value)
        {
            return $this->createQueryBuilder('a')
                ->andWhere('a.exampleField = :val')
                ->setParameter('val', $value)
                ->orderBy('a.id', 'ASC')
                ->setMaxResults(10)
                ->getQuery()
                ->getResult()
            ;
        }
        */
    
        /*
        public function findOneBySomeField($value): ?Account
        {
            return $this->createQueryBuilder('a')
                ->andWhere('a.exampleField = :val')
                ->setParameter('val', $value)
                ->getQuery()
                ->getOneOrNullResult()
            ;
        }
        */
    }


    App\Entity\Account.php:
    <?php
    
    namespace App\Entity;
    
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * @ORM\Entity(repositoryClass="App\Repository\AccountRepository")
     */
    class Account
    {
        /**
         * @ORM\Id()
         * @ORM\GeneratedValue()
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\Column(type="string", length=255, unique=true, nullable=false)
         */
        private $username;
    
        /**
         * @ORM\Column(type="string", length=255, nullable=false)
         */
        private $password;
    
        /**
         * @ORM\Column(type="integer", nullable=true)
         */
        private $status;
    
        /**
         * @ORM\Column(type="string", length=255, nullable=true)
         */
        private $status_title;
    
        /**
         * @ORM\Column(type="datetime", nullable=true)
         */
        private $access_date;
    
        /**
         * @ORM\Column(type="integer")
         */
        private $owner_id;
    
        /**
         * @ORM\Column(type="string", length=255, nullable=true)
         */
        private $avatar;
    
        /**
         * @ORM\Column(type="boolean", nullable=true)
         */
        private $autopay;
    
        /**
         * @ORM\Column(type="integer")
         */
        private $worker_id;
    
        public function getId(): ?int
        {
            return $this->id;
        }
    
        public function getUsername(): ?string
        {
            return $this->username;
        }
    
        public function setUsername(string $username): self
        {
            $this->username = $username;
    
            return $this;
        }
    
        public function getPassword(): ?string
        {
            return $this->password;
        }
    
        public function setPassword(string $password): self
        {
            $this->password = $password;
    
            return $this;
        }
    
        public function getStatus(): ?int
        {
            return $this->status;
        }
    
        public function setStatus(?int $status): self
        {
            $this->status = $status;
    
            return $this;
        }
    
        public function getStatusTitle(): ?string
        {
            return $this->status_title;
        }
    
        public function setStatusTitle(?string $status_title): self
        {
            $this->status_title = $status_title;
    
            return $this;
        }
    
        public function getAccessDate(): ?\DateTimeInterface
        {
            return $this->access_date;
        }
    
        public function setAccessDate(?\DateTimeInterface $access_date): self
        {
            $this->access_date = $access_date;
    
            return $this;
        }
    
        public function getOwnerId(): ?int
        {
            return $this->owner_id;
        }
    
        public function setOwnerId(int $owner_id): self
        {
            $this->owner_id = $owner_id;
    
            return $this;
        }
    
        public function getAvatar(): ?string
        {
            return $this->avatar;
        }
    
        public function setAvatar(string $avatar): self
        {
            $this->avatar = $avatar;
    
            return $this;
        }
    
        public function getAutopay(): ?bool
        {
            return $this->autopay;
        }
    
        public function setAutopay(?bool $autopay): self
        {
            $this->autopay = $autopay;
    
            return $this;
        }
    
        public function getWorkerId(): ?int
        {
            return $this->worker_id;
        }
    
        public function setWorkerId(int $worker_id): self
        {
            $this->worker_id = $worker_id;
    
            return $this;
        }
    }


    Всё создавалось через make:entity и не изменялось, в Symfony работает отлично, а вот в коде выше внезапно перестало
  • Как решить ошибку "must be an instance of Symfony...."?

    w_b_x
    @w_b_x Автор вопроса
    Максим Федоров, К сожалению и это попробовал, удалил AccountRepository.php и через команду php bin/console make:entity --regenerate восстановил, но проблема вернулась:
    Fatal error: Uncaught TypeError: Argument 1 passed to App\Repository\AccountRepository::__construct() must be an instance of Symfony\Bridge\Doctrine\RegistryInterface, instance of Doctrine\ORM\EntityManager given, called in _путь к проекту_\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php on line 68 and defined in _путь к проекту_\src\Repository\AccountRepository.php:17
  • Как решить ошибку "must be an instance of Symfony...."?

    w_b_x
    @w_b_x Автор вопроса
    Максим Федоров, После удаления ошибка изменилась:
    Fatal error: Uncaught TypeError: Argument 1 passed to Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository::__construct() must be an instance of Doctrine\Common\Persistence\ManagerRegistry, instance of Doctrine\ORM\EntityManager given, called in _путь к проекту_\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php on line 68 and defined in _путь к проекту_\vendor\doctrine\doctrine-bundle\Repository\ServiceEntityRepository.php:28
  • Как использовать Doctrine вне Symfony?

    w_b_x
    @w_b_x Автор вопроса
    В рот мне ноги, вы мой кумир, спасибо за решение
  • Как задать условиЯ селектору jquery?

    w_b_x
    @w_b_x
    dicplay не будет работать)
    Реально рабочий вариант:
    $('.number_service[data-row-index="2"]').css('display','block')
  • Как сделать нативную базовую http-авторизацию?

    w_b_x
    @w_b_x Автор вопроса
    Спасибо за интерес.
    Как реализована на бекенде к большому сожалению не знаю, так как обращаюсь к чужому хосту.

    Если обращаюсь через браузер и авторизуюсь с root и root, то в последующем заголовки выглядят так (смотрел через панель разработчика в FireFox):
    Host: example.ru
    User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Authorization: Digest username="root", --- тут далее результаты basic-авторизации (хеши) ---
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    If-Modified-Since: Fri, 03 Nov 2017 12:55:11 GMT
    If-None-Match: "-1330132489"
    Cache-Control: max-age=0
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Да причём тут гнуть линию, мне просто дали множество ответов без конкретики, основанных на абстрактных вещах, лишь несколько человек в итоге дали действительно хорошие примеры, которые помогли понять почему в разных случаях используются те или иные инструменты.

    Человек развивается, когда задаёт вопросы и ищет на них ответы, этим я и занимаюсь, просто многие ответы не удовлетворили моего понимания.
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Андрей Андреев: Потому что мой замечательный код не предусматривает обращений внешних разработчиков, а каждый серверный код, который использует эти функции прокомментирован и описан, чтобы не допустить пропуска обязательных параметров
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    kruslan:
    Пример выдуман, но под задачу работы с 1 бд, он легко подходит и даже если потребуется подключать несколько бд то изменения крайне просто сделать. Просто добавляем в функцию опциональный параметр $table с названием БД для работы: _mysql_connect($table) и возвратом хендла, если $table указан. Таким образом прошлый код переписывать не придётся, а новый легко впишется с минимальными затратами времени.

    Некоторые аргументы понял, но вот этот нет:
    Не правы. Понять десяток файлов не сложно, понять несколько тысяч файлов - не реально.

    Почему процедурный стиль вдруг растянется на тысячи файлов?

    На моём опыте ООП занимает значительно больше места в файлах по строкам и как результат как раз растягивается на сотни файлов с самыми разными объектами и классами вызываемыми друг из друга как в лабиринте. Опять же опыт субъективный, буду рад если поделитесь своим опытом.
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    devalone: Где с можно ним познакомиться?)
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    w_b_x
    @w_b_x Автор вопроса
    Противопоставляется не конкретно ООП и функциональный стиль, а общая тенденция к использованию множества инструментов взамен нативного php. И противопоставляется только для того, чтобы понять смысл этого и возможно прийти на "путь истинный", если в этом действительно есть весомый смысл, а не просто вкусовщина и мода.

    И извините, за мой дырявый код, буду также рад, если вы укажите на его недостатки, может в мире станет на один гавнокод меньше)