Zf2 ScnSocialAuth HybridAuth zfcuser и маршруты

Использование ZF2 для настройки объекта на основе ZfcUser. Пытался использовать ScnSocialAuth и получил небольшую проблему. Проблема в том, что я использую пользовательские маршруты («/ учетная запись» вместо «/ пользователь»), и при реализации ScnSocialAuth я не могу получить социальный код в своем пользовательском представлении zfcuser...? У меня есть \\view\zfc-user\user\register.php, который переопределяет регистрацию zfcuser. У меня есть индивидуальный маршрут:

'account' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                        'route' => '/account',
                ),
        ),

Это моя модификация конфигурации zfc в \my-module\config\module.config.php

    'zfcuser' => array(
        // telling ZfcUser to use our own class
        'user_entity_class'       => 'WMember\Entity\WMember',
        // telling ZfcUserDoctrineORM to skip the entities it defines
        'enable_default_entities' => false,
        'table_name' => 'w_member',
        'login_redirect_route' => 'account',
),

Мой глобальный \config\application.config.php

'ScnSocialAuth',
'MyModule1',
'ZfcBase',
'ZfcUser',
'BjyAuthorize',
'GoalioMailService',
'GoalioForgotPassword',
'my-user-module',

Поэтому после всего этого:

  1. Я могу увидеть свою собственную расширенную форму регистрации пользователя, перейдя к /account/register без видимых ссылок для входа в социальные сети.
  2. Я вижу ScnSocialAuth при переходе к /user/register

а) Я не могу создать представление в своем модуле для переопределения \vendor\scn-social-auth\user\register.phtml, как это было сделано с zfcuser

Пожалуйста, помогите настроить ScnSocialAuth для работы с моей пользовательской настройкой маршрута. Если это просто неправильно, пожалуйста, дайте мне знать, так как я не эксперт по ZF2. С удовольствием приму "конструктивную" критику.

Видел эти сообщения: Как (правильно) расширить ScnSocialAuth\Authentication\Adapter\ HybridAuth::authenticate()? и это результат сообщения выше: https://github.com/SocalNick/ScnSocialAuth/issues/202

ПРИМЕЧАНИЕ: по-прежнему работает ZF-2.3* из-за PHP 5.3,5.4.


person JI-Web    schedule 07.07.2015    source источник
comment
ПРИМЕЧАНИЕ. Я могу явно переопределить представление с помощью пути ['template_map']['zfc-user/user/register'] =› DIR к моему файлу представления. Как только это будет сделано, я получаю фатальную ошибку: вызов функции-члена getEnabledProviders(), и кажется, что этот помощник представления недоступен? $this-›options-›getEnabledProviders()   -  person JI-Web    schedule 07.07.2015


Ответы (1)


Вместо добавления пользовательского маршрута в конфигурацию вам нужно переопределить маршрут zfcuser.

<?php
// @file MyUserModule/config/module.config.php
return array(
    // other config ...

    'router' => array(
         'routes' => array(
            'zfcuser' => array(
                'options' => array(
                    // this is the only change needed to route zfcuser to /account
                    'route' => '/account',
                ),
            ),
         ),
     ),

     // more config ...
);

Модуль ScnSocialAuth использует плагин forward() для рендеринга содержимого из представления регистрации zfcusers (и представления входа в систему iirc), что означает, что он будет когда-либо просматривать только маршрут zfcuser и полностью игнорировать ваш собственный маршрут. Единственный способ заставить его использовать ваш собственный маршрут — заменить ScnSocialAuths UserController вашим собственным, используя идентичный код, но с пересылкой на ваш собственный маршрут (там гораздо больше работы, и все же есть вероятность сломать что-либо еще, что ожидает, что zfcuser будет используемым маршрутом )

person Crisp    schedule 07.07.2015
comment
Спасибо Крисп за быстрый ответ. К сожалению, это уже было в моем массиве конфигурации @file MyUserModule/config/module.config.php. ' 'router' =› array( 'routes' =› array( // Начать перезаписывать маршрут zfcuser 'zfcuser' =› array( // 'type' =› 'Zend\Mvc\Router\Http\Literal', 'options ' =› array( 'route' =› '/account', ), ), ' После удаления литерала из конфигурации все еще кажется, что это решение может потребовать отката к маршруту 'user' вместо 'account' - person JI-Web; 08.07.2015
comment
Похоже, ответ от разработчика модуля приблизил меня: переопределите ключ конфигурации для: scn-social-auth-user с «маршрутом», установленным на настраиваемый маршрут, к которому вы пытаетесь добраться. Это вместе с вышеупомянутой настройкой zfcuser, похоже, работает. ТЕПЕРЬ у меня есть еще одна проблема с регистрацией zfcuser, и даже при удалении модуля scn-social я теперь не могу зарегистрироваться (оператор не может быть выполнен (42S22 - 1054 - неизвестный столбец 'array_copy' в 'списке полей') ) ... еще одна ошибка для решать... - person JI-Web; 24.07.2015