Ответы пользователя по тегу Symfony
  • Можно ли используя $app[]->insert(...) сразу же получить id записи?

    bboytiwst
    @bboytiwst
    Привет

    $entityManager->getConnection()->lastInsertId()
    в твоем случае надо попробовать
    $app['db']->lastInsertId()
    Ответ написан
    Комментировать
  • Какую бесплатную cms/фреймворк использовать для интернет-магазина?

    bboytiwst
    @bboytiwst
    В идеале это конечно же Magento. Научившись правильно "готовить" именно это решение у вас будет неоспоримое количество преимуществ в виде большого коммьюнити и огромного количества готовых решений. Проблемой здесь является только сложность входа, т.к написана CMS громоздко, много чего было бы не плохо заменить, но legacy проекты, которые по сути являются основным руслом дохода этого не позволят сделать в ближайшие годы.
    По поводу других решений. На слуху за последнее время все чаще появляются небольшие "стартапы", которые опен сорсны в своем большинстве и при этом используют новые технологии и подходы, тем самым обучая разработчиков изначально правильно мыслить. Проблемой таких решения является противоположность плюсам magento, а именно наличием очень малочисленного (относительно magento) коммьюнити, а также совсем плохую ситуацию с количеством модулей. Официальные сайты описанных выше систем sylius.org thelia.net aimeos.org/project/symfony-shop-bundle dotplant.ru
    Ответ написан
    1 комментарий
  • Как реализовать электронные платежи в Symfony2?

    bboytiwst
    @bboytiwst
    Подход неправильный. Надо выбирать сначала платежку с подходящими для вас условиями и возможностями, а уже потом искать для неё инструмент. 90% платежных систем имеют более-менее открытый API, с которым уже работать не составит особых проблем.

    Ну а если срочно надо и пофиг какая платежка, то
    knpbundles.com/keyword/payment
    Ответ написан
    Комментировать
  • Как запихнуть JSON в Response?

    bboytiwst
    @bboytiwst
    Сегодня помогал товарищу с Silex"ом и там есть вот такая штука

    $app->before(function (Request $request) {
        if (0 === strpos($request->headers->get('Content-Type'), 'application/json')) {
            $data = json_decode($request->getContent(), true);
            $request->request->replace(is_array($data) ? $data : array());
        }
    });


    этот код очень легко перенести на симфони, просто зарегистрировав listener symfony.com/doc/current/cookbook/service_container...

    Ссылки на все готовое
    labs.qandidate.com/blog/2014/08/13/handling-angula... - пост
    https://github.com/qandidate-labs/symfony-json-req... - listener
    Ответ написан
    Комментировать
  • Как же всётки создавать админку c Symfony2?

    bboytiwst
    @bboytiwst
    А в чем проблема с REST? Мне кажется на уровне таких бандлов как FOSRESTBundle почти все проблемы уже решены и стоит только правильно всё это приготовить ( С добавлением в симфони 2.6 групп сериализации так и вовсе без него можно обойтись. Из коробки даже всё ок у симфони сейчас).
    По поводу админок, так здесь очень зависит от конкретной задачи, т.к у каждого бандла будь-то Sonata, AdminGenerator или же новоиспеченный EasyAdmin есть свой функциональный предел, понимая этот придел и текущую задачу надо уже и выбирать бандл. Например когда заказчику главное зарелизиться, а функционал админки потом можно допиливать по ходу делаа, то для таких случаев подойдет EasyAdmin, AdminGenerator, когда же надо что то серьезное более-менее тогда надо брать Sonata, но у неё есть проблема с формочками и когда у вас админка начнет активно расти и расширяться, то в этот момент начнутся проблемы.
    Как вариант можно админку писать на js фреймворке (что удобно, т.к не требуется создавать отдельный бандл и можно просто добавить контроллер для "REST - админки")
    Другой вариант это писать её с 0 используя формочки симфони и всё остальное с базового комплекта (не используя никаких бандлов для админки).
    Ответ написан
    7 комментариев
  • Как строишь приложения на Symfony2 ты?

    bboytiwst
    @bboytiwst Автор вопроса
    Ну раз никто ничего интересного не пишет, напишу сам :) Может решение и достаточно очевидное, но постоянно вижу дубли кода для загрузки файлов в Symfony2 когда не требуется что то комплексное как Gaufrette или же Doctrine Uploadable, можно использовать трейты.

    src/Traits/UploadTrait.php

    <?php
    
    
    namespace YouBundle\Traits;
    use Symfony\Component\HttpFoundation\File\UploadedFile;
    use Symfony\Component\Validator\Constraints as Assert;
    
    trait UploadTrait {
    
        /**
         * @Assert\File(
         * maxSize="2M",
         * mimeTypes={
         *     "image/png",
         *     "image/jpeg",
         *     "image/gif",
         *     "image/jpg"
         * }
         * )
         *
         */
        private $file;
    
        private $temp;
    
        /**
         * @return mixed
         */
        public function getFile()
        {
            return $this->file;
        }
        /**
         * Sets file.
         *
         * @param UploadedFile $file
         */
        public function setFile(UploadedFile $file = null)
        {
            $this->file = $file;
    
            if (isset($this->path)) {
                $this->temp = $this->path;
                $this->path = null;
            } else {
                $this->path = 'initial';
            }
        }
    
        /**
         * @ORM\PrePersist()
         * @ORM\PreUpdate()
         */
        public function preUpload()
        {
    
            if (null !== $this->getFile()) {
    
                $filename = sha1(uniqid(mt_rand(), true));
                $this->path = $filename.'.'.$this->getFile()->guessExtension();
            }
        }
    
        /**
         * @ORM\PostPersist()
         * @ORM\PostUpdate()
         */
        public function upload()
        {
            if (null === $this->getFile()) {
                return;
            }
    
            $this->getFile()->move($this->getUploadRootDir(), $this->path);
    
    
            if (isset($this->temp)) {
    
                unlink($this->getUploadRootDir().'/'.$this->temp);
    
                $this->temp = null;
    
            }
            $this->file = null;
        }
    
        public function getAbsolutePath()
        {
            return null === $this->path
                ? null
                : $this->getUploadRootDir().'/'.$this->path;
        }
    
        public function getWebPath()
        {
            return null === $this->path
                ? null
                : $this->getUploadDir().'/'.$this->path;
        }
    
        protected function getUploadRootDir()
        {
            return __DIR__.'/../../../../web/'.$this->getUploadDir();
        }
    }


    а в самой сущности надо задать свойство $path
    /**
         * @ORM\Column(type="string", length=255, nullable=true)
         */
        private $path;


    и определить папку в которую заливать это все добро будем
    protected function getUploadDir()
        {
            return 'images/courts/photos';
        }


    P.S решение предоставляю как базовое, не претендующее на что то серьезное, код взят с официальной документации и просто завернут в трейт, который можно использовать повторно. Если будет надобность на проекте в усовершенствовании, то допилю и выложу сюда еще и обновленную версию
    Ответ написан
    2 комментария
  • Какие есть бандлы на Symfony2 для реализации чата(диалогов)?

    bboytiwst
    @bboytiwst
    https://github.com/FriendsOfSymfony/FOSMessageBundle

    как вариант? если чего то нет то можно дописать без проблем
    Ответ написан
    Комментировать