• После ajax не работает jquery?

    В success поток управления попадает? Напишите что-то вроде ...success:function(data){ console.log( data )...
    Написано
  • Mysql не принимает значение IN. Почему?

    Вот здесь нашел пример:
    $arr = array(1,2,3);
    $in  = str_repeat('?,', count($arr) - 1) . '?';
    $sql = "SELECT * FROM table WHERE column IN ($in)";
    $stm = $db->prepare($sql);
    $stm->execute($arr);
    $data = $stm->fetchAll();
    Написано
  • Mysql не принимает значение IN. Почему?

    Проще всего так:,
    ...
    return $this->db->row('SELECT * FROM goods WHERE id IN ('.  join(' ,' , $params ) .');
    ...

    Но налицо имеет место быть prepared-запрос, смотрите документацию.
    Написано
  • Стоит ли изучать фреймворк php и какой именно?

    Для чего компании требуют знание конкретных фреймворков Дмитрий ответил. Облегчение разработки, IMHO, состоит в том, что любой фреймворк для Web содержит как минимум, обработчик http-запросов, маршрутизатор, поддержку работы с БД. Следом могут быть такие компоненты фреймворка, как шаблонизатор, средства авторизации и аутентификации. Если система монолитная, то она уже содержит все, что только умеет. Если система модульная, то она изначально "голая", но после установки можно при необходимости подключать различные вкусняшки типа загрузки файлов, шаблонизатора, создание админки и.т.д. Некоторые фреймворки поддерживают фронтэнд-разработку "из коробки" ( например Laravel c поддержкой VueJS ). Смысл использования фремворков в том, что они написаны под всевозможные ситуации, с поддержкой различных серверов БД, различных http-серверов и.т.д и написаны профессионалами. Нет необходимости каждый раз "изобретать велосипед" для тех задач, которые давно уже решены. Программисту требуется только собрать из этих кубиков то, что ему нужно. Roadmap я-бы посоветовал такой: Laravel, Symfony, Zend.
    Написано
  • Как сместить элементы массива в зависимости от выбранного элемента?

    let length = arr.length
    ...
    current = index;
    prev = current ? current - 1 : length - 1;
    next = current + 1 == length ? 0 : current + 1;

    Остальные айтемы достроить можно подобным образом при необходимости.
    Написано
  • Как показать форму CKEditor в разделе show?

    shindax
    @shindax Автор вопроса
    Просмотров моего вопроса мало, ответов вообще нет, думал, что может это мало кому надо. :-) Описываю свое решение. По моим потребностям оказалось все просто. Для каждого entity держу настройки в отдельном файле. Для OrgNews указал:
    ...
    entities:
            OrgNews:
                  templates:
                      list: 'easy_admin/org_news_list.html.twig'
                      show: 'easy_admin/org_news_show.html.twig'
                  class: App\Entity\OrgNews
                  label: 'Новости'
    ...
    show:
                      title: 'Смотреть новость'
                      fields:
                          - { property: 'title', label: 'Заголовок' }
                          - { property: 'image', type: 'image', label : 'Изображение', base_path: '/uploads/'  }
                          - { property: 'short_text', label: 'Текст анонса', css_class: 'rtf-div' }
                          - { property: 'full_text', label: 'Полный текст', css_class: 'rtf-div'}
    ...

    Скопировал файлы list.html.twig и show.html.twig из папки \vendor\easycorp\easyadmin-bundle\src\Resources\views\default\ в папку \templates\easy_admin как org_news_list.html.twig и org_news_show.html.twig соответственно. В файле org_news_show.html.twig в блоке main внес следующие изменения:
    ...
    <div class="form-widget">
                                {% if metadata.columnName == 'short_text' %}
                                {# Поле 'ShortText' #}
                                        <div style="padding: 10px 10px; background: #ddd; height: 150px; overflow: auto;" class="{{ metadata.css_class }}">
                                            {{ entity.ShortText|raw }}
                                        </div>
                                {% elseif metadata.columnName == 'full_text' %}
                                {# Поле 'FullText' #}
                                    <div style="padding: 10px 10px; background: #ddd; height: 150px; overflow: auto;" class="{{ metadata.css_class }}">
                                        {{ entity.FullText|raw }}
                                    </div>
                                {% else %}
                                {# Все остальные поля #}
                                <div class="form-control">
                                    {{ easyadmin_render_field_for_show_view(_entity_config.name, entity, metadata) }}
                                </div>
    ...

    Т.е. при рендере интересующих полей вывод ведется в отдельный div. Вся верстка при этом, разумеется, сохраняется. CSS стили после вынесу в CSS файл. Ну и следом. Файл list.html.twig унаследовал и дописал так, чтобы редактировать и удалять новости мог только автор новости, кнопки "Редактировать" и "Удалить" просто удаляются перед рендерингом. Как-то так. :-)
    Написано
  • Как показать форму CKEditor в разделе show?

    shindax
    @shindax Автор вопроса
    Разрулил, всем спасибо. :-)
    Написано
  • Как получить юзера после создания записи?

    shindax
    @shindax Автор вопроса
    BoShurik, спасибо, начинает проясняться. Говорю-же, копать мне и копать далее. :-)
    Написано
  • Как получить юзера после создания записи?

    shindax
    @shindax Автор вопроса
    BoShurik, спасибо. Про этот подход я прочел в Symfony fast track от Fabien Potencier. Это работает, но не в моем случае. Выше я упомянул, что увидел на выходе. Никакое наследование, никакое Dependency injection не помогло мне получить зарегистрированного юзера, кроме как через EventListener. Просто не ожидал, что такое простое желание, от одного из лучших, как говорят, фреймворков, обернется подобным подходом. Самое главное, я не понимаю почему. В документации про Autowiring не сказано, какие сервисы можно получить, а какие нет. Возможно, мало просто еще с Symfony знаком.
    Написано
  • Как получить юзера после создания записи?

    shindax
    @shindax Автор вопроса
    Спасибо, помогло. Сделал через EventListener, но мне все-же непонятно, почему эти данные нельзя получить напрямую из контейнера, безо всяких слушателей. Буду копать дальше, какие ещё есть методы для решения подобных задач.
    Написано
  • Книга или что-то еще для изучения javascript?

    Попробуйте. Не знаю. Может JavaScript это вообще не Ваш язык.
    Написано
  • Как автоматически запустить сервис?

    shindax
    @shindax Автор вопроса
    Спасибо, обязательно почитаю. Про $_GET, $_POST и иже с ними. Заказчик требует сквозную аутентификацию. Крутиться сайт будет на IIS. Я с ним совсем не работал, но напарник знакомый с IIS сказал, что Windows-логин пользователя станет доступным на сайте в глобальной переменной $_SERVER['AUTH_USER']. Вот из этого я пока и исхожу. С Symfony работаю второй месяц. Грызу курсы от KNP university: "Stellar Development with Symfony 4" и "Symfony 4 Fundamentals Services Config Environments". Там хоть и Symfony 4 рассматривается, весь код идет и на 5-ке.
    Написано
  • Как построить автоматическую авторизацию при входе на сайт?

    shindax
    @shindax Автор вопроса
    Да. В моем тестовом примере это "admin@mail.ru". Но если логин этого пользователя лежит в $_SERVER['AUTH_USER'], то и вызов будет иным:
    ...
    $this -> autologin( $_SERVER['AUTH_USER'], $request );
    ...

    В этом была основная идея.
    Написано
  • Как построить автоматическую авторизацию при входе на сайт?

    shindax
    @shindax Автор вопроса
    У меня настроена авторизация по email. Тестовый контроллер прописан так:
    <?php
    // src/Controller/SomeController.php
    namespace App\Controller;
    
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Routing\Annotation\Route;
    use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
    use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
    use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
    use Symfony\Component\EventDispatcher\EventDispatcher;
    
    class SomeController extends AbstractController
    {
         /**
          * @Route("/", name="app_homepage")
          */
        public function index( Request $request )
        {
            $this -> autologin( "admin@mail.ru", $request );
            return $this->render('base.html.twig');
        }
    
        public function autologin( $email, $request )
        {
            $dispatcher = new EventDispatcher();
            $user = $this->getDoctrine()->getManager()->getRepository("App\Entity\User")->findOneBy(['email' => $email ]);
            $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
            $this->get('security.token_storage')->setToken($token);
            $this->get('session')->set('_security_main', serialize($token));
            $event = new InteractiveLoginEvent($request, $token);
            $dispatcher->dispatch($event);
        }
    }


    Наводку на код нашел в сети, но там было под Symfony 4. У меня Symfony 5, допилил, может кому, чем поможет, хотя-бы идеологически :-D. Мой класс User устроен по нужной нам модели, метод getRoles там переписан, но это - детали реализации. Попробовал это вынести в сервисный слой, работает. От такого решения отдает "костылями", но я и с Symfony знаком лишь месяц. :-)
    Написано
  • Как построить автоматическую авторизацию при входе на сайт?

    shindax
    @shindax Автор вопроса
    Спасибо, попробую.

    Но мне нужна была именно не только аутентификация, но и авторизация, а все роли лежат в БД. Но я нашел решение для автоматического входа произвольного пользователя без формы авторизации. Если кому будет интересно, могу поделиться. :-)
    Написано
  • Easy admin. Как проверить путь?

    shindax
    @shindax Автор вопроса
    2Максим Федоров Максим Федоров. Есть возможность написать Вам в личку?
    Написано
  • Easy admin. Как проверить путь?

    shindax
    @shindax Автор вопроса
    Добрый день. Нет пока. Винда упала. Только все восстановил. Если готовы помочь, позадаю Вам вопросы. :-)
    Написано
  • Easy admin. Как проверить путь?

    shindax
    @shindax Автор вопроса
    Максим Федоров Максим Федоров, не поделитесь ссылкой на рабочий пример наследования EasyAdminController?
    Написано
  • Easy admin. Как проверить путь?

    shindax
    @shindax Автор вопроса
    Спасибо, буду копать.
    Написано
  • Easy admin. Как проверить путь?

    shindax
    @shindax Автор вопроса
    Спасибо за ответ, с контроллером попробую что получится. Насчет item_permission. Первым делом этот вариант попытался использовать. Полагал, что пункты 'edit' и 'delete' просто не будут видны. Пункты имеются. С недопустимой ролью для редактирования данного entity, при нажатии 'edit' получаю "The logged in user does not have the required roles to complete the "edit" action on the "User" entity with ID "1"." Т.е. за ролями Easy admin следит, но как принято поступать в данной ситуации? Отлавливать исключение? В курсе от KNPUniversity, рекомендуют отлавливать события самого Easy admin. Насчет наследования EasyAdminController есть, что почитать? И аннотации вида
    /**
    * @codeCoverageIgnore
    * @Security("is_granted('ROLE_CAN_EDIT_USER')")
    */
    тоже пока не видел. В документации на Symfony есть про это?
    Написано