Задать вопрос
  • Как создать ссылку на backend из frontend в Yii2?

    serieznyi
    @serieznyi
    Backend Developer
    Что бы во frontend иметь возможность формировать ссылки на контроллеры backend необходимо в frontend добавить новый UrlManager.

    В \yii2rbac\frontend\config\main.php добавьте следующий компонент
    'urlManagerBackend' => [
                'class' => 'yii\web\urlManager',
                'baseUrl' => 'http://yoursitedomain.ru',
                'enablePrettyUrl' => true,
                'showScriptName' => false,
                'rules' => require(__DIR__ . '../backend/routes.php'),
            ],


    После это вы можете легко создавать ссылки на backend из frontend используя второй менеджер
    Yii::$app->urlManagerBackend->createUrl(['controller/action', 'parametr1' => 'value1']),


    Обратите внимание что правила роутинга я вынес в отдельный файл т.к. эти правила будут использоваться как в urlManager backend, так и в urlManagerBackend во frontend. Это избавляет нас от дублирования.

    Аналогичным образом вы сможете настроить формирование ссылок на frontend из backend.
    Ответ написан
    4 комментария
  • Есть ли видеокурс/книга где разрабатывается проект средней сложности на фреймворке?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Проект средней сложности - это хотя бы год работы команды людей, при чем не под запись, а реальной работы. Посему вероятность, что что-то подобное найдете - очень низкая.

    Рекомендую почитать:
    symfony.com/doc/current/book/index.html
    symfony.com/doc/current/best_practices/index.html
    Ответ написан
    Комментировать
  • Как правильно организовать AJAX-проверку формы?

    @lnked
    Вы хотите сделать много лишних запросов, можно все сделать в 1м запросе
    код не проверен, писался для ответа на вопрос:
    $('body').on('submit', '#login-form', function(e) {
        e.preventDefault();
        
        var error = false,
            $form = $(this),
            $email = $('input[name="email"]'),
            $login = $('input[name="login"]');
        
        // Вначале надо проверить на пустоту поля, что бы не делать лишний запрос
        if ($('input[name="login"]').is(':empty'))
        {
            $login.addClass('error');
            error = true;
        }
        
        if ($email.is(':empty'))
        {
            $email.addClass('error');
            error = true;
        }
    
        if (!error)
        {
            $form.find('.error').removeClass('error'); // если подсвечиваете поля с ошибками, при повторном запросе надо убрать отметку
    
            $.ajax({
                url: '/api/login/',
                type: 'post',
                data: $form.serialize(),
                dataType: 'JSON',
                success: function(data)
                {
                    if (!data.errors)
                    {
                        // Поздравляем с успешной регистрацией
                    }
                    else
                    {
                        // Выдача сообщения об ошибке
                    }
                }
            });
        }
        return false;
    });
    Ответ написан
    Комментировать