• Как запросить несколько Постов вместе с тэгами в Doctrine/Symfony?

    @TexElless
    Backend-разработчик(преимущественно PHP и Symfony)
    Не у всех :)
    Надо или для отношения добавить режим fetch="EAGER"
    Или, если подгружать теги нужно не всегда, для загрузки поста с тегами сделать отдельный метод в репозитории, в котором будет выполняться JOIN.

    Документация по поводу fetch mode
    Ответ написан
    7 комментариев
  • Почему возникает ошибка в синтаксисе?

    @TexElless
    Backend-разработчик(преимущественно PHP и Symfony)
    Скобки это конечно правильно, но "магия" не в них, изначальная проблема в том, что стоят лишние точки с запятой.
    Ваш вариант парсер понимал как:
    $a=4;
    $b=10;
    $z= $a*$b;
    if ($a && $b > -1) {
      echo $a-$b;
    } elseif ($a && $b < 0) {};
    echo $a * $b; // уже выполнится без условия
    elseif ($z < -1) {}; // соответственно уже вообще не относится к предыдущему if'у
    echo $a+$b;


    Поэтому скобки и надо ставить, с ними нагляднее.
    Ответ написан
    Комментировать
  • Composer autoload?

    @TexElless
    Backend-разработчик(преимущественно PHP и Symfony)
    Руками добавить в composer.json вот такое:
    "autoload": {
        "classmap": [
          ...
        ],
        "psr-4": {
          ...
        },
        "files": [
          "path/to/your/helper.php"
        ]
    }


    И не забыть дернуть composer dump-autoload.
    Ответ написан
    5 комментариев
  • Почему в silex framework нет папки контроллеров?

    @TexElless
    Backend-разработчик(преимущественно PHP и Symfony)
    У Silex'а нет строгой структуры "из коробки", у нас в проде вполне живет проект с роутингом прям в index.php, а внутри роутов просто дергаются методы нужных сервисов. Что-то вроде такого:
    $forecast = $app['controllers_factory'];
    $forecast->get('/calculations', function (Request $request) use ($app) {
        $data = new \App\Services\ForecastService($app['db'], $request, $app['user']);
        $return = $data->getForecastCalculations();
    
        return new JsonResponse((array)$return, 200, ['access-control-allow-origin' => '*']);
    });
    $app->mount('/forecast', $forecast);
    $app->after($app['cors']);
    
    $app->run();


    Если нужно усложнение логики - можно из роутинга вызывать нужный контроллер, внутри него уже дергать нужное количество сервисов, подготавливающих ответ. При этом где будут храниться сервисы, контроллеры, модели и будут ли они у вас вообще - исключительно ваше дело. Можно делать по аналогии с другими фреймворками (Laravel-style, Symfony-style), можно придумать что-то своё, главное поддерживать единообразие, чтобы потом самому в этом не запутаться.
    Ответ написан
    Комментировать
  • Как получить название модели из полученной коллекции?

    @TexElless
    Backend-разработчик(преимущественно PHP и Symfony)
    if ($auth instanceof User) {
    // user related code
    } elseif ($auth instanceof Server) {
    // server related code
    } else {
    throw new SomeException()
    }

    Документация
    Ответ написан
    Комментировать
  • Как в PHP реализовать наследование объекта классом как в PHALCON?

    @TexElless
    Backend-разработчик(преимущественно PHP и Symfony)
    Звучит как неправильное употребление слова "наследовать".
    Вы создаете экземпляр класса, сохраняете в полученный объект какие-то значения и хотите.. что?
    Чтобы все экзепляры этого класса получали эти свойства? Тогда вам нужно код, который вызывает метод share() вынести в конструктор класса.
    Просто сделать еще один экземпляр класса, у которого есть эти же свойства? Понятия не имею зачем вам это, но можете сделать $newModule = clone $module;
    Если вы хотите новый класс, у которого будут эти свойства - наследуйте от текущего класса, а код "шаринга" напишите в конструкторе нового класса-потомка.

    Если все эти варианты мимо - уточните, что именно вам нужно получить в результате.
    Ответ написан
    3 комментария
  • Symfony3 Как разложить массив, с глобальной переменной?

    @TexElless
    Backend-разработчик(преимущественно PHP и Symfony)
    Немного замечаний.
    1) Если сервис регистрируется как глобальный, его не надо оформлять в виде twig-extension и ставить ему тегу. Нужно одно из двух.
    2) Не совсем понятно зачем нужно оборачивать findAll() в массив. Попробуйте сделать просто
    return $this->em->getRepository('BloggerBackendBundle:Categories')->findAll()

    и в twig ваш первый вариант должен заработать. Сейчас в первом варианте в переменной item получается как раз массив ваших категорий, ключами которых идут числа, о чем и говорит ошибка.
    Ответ написан
    Комментировать
  • Symfony3+Twig Как сделать глобальную переменную?

    @TexElless
    Backend-разработчик(преимущественно PHP и Symfony)
    Сделайте сервис, который сможет отдавать нужные вам данные по запросу нужного метода.
    И заинжектите сервис в twig.
    В config.yml:
    twig:
        globals:
            your_service: '@your_service'

    В twig можно просто дергать {{ your_service.someMethod() }}

    Немного документации.
    Ответ написан
    Комментировать
  • Как зайти на сервер по root?

    @TexElless
    Backend-разработчик(преимущественно PHP и Symfony)
    При условии что нет банальных ошибок в вводе пароля, возможно запрещен remote root login. Копайте в конфиг ssh на сервере. Пример здесь.
    Но, на всякий случай замечу, открывать root'а с обычным паролем наружу == радовать ботов, которые пытаются ломиться по стандартным логинам, используйте отдельного пользователя.
    Ответ написан
    1 комментарий
  • Как можно скопировать из одной таблицы в новую с новыми id?

    @TexElless
    Backend-разработчик(преимущественно PHP и Symfony)
    Очистите автоинкремент в таблице. Либо чем-то в духе
    ALTER TABLE tablename AUTO_INCREMENT = 1;
    Либо для очистки можно использовать
    TRUNCATE TABLE tablename;
    Вместо обычного DELETE FROM.
    Ответ написан
    Комментировать