Как переопределить метод виджета в yii2-authclient?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
b.alex
Сообщения: 12
Зарегистрирован: 2019.06.04, 07:13

Как переопределить метод виджета в yii2-authclient?

Сообщение b.alex »

Есть виджет в расширении yii2-authclient вот он конкретно вот виджет https://github.com/yiisoft/yii2-authcli ... Choice.php
Мне нужно переделать метод для вывода кнопок вот этот public function clientLink
Я создал другой виджет с этим методом вот так

Код: Выделить всё

<?php
/**
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

namespace frontend\widget;

use yii\base\InvalidConfigException;
use yii\base\Widget;
use yii\helpers\Html;
use yii\authclient\ClientInterface;
use yii\authclient\widgets\AuthChoice;
use yii\authclient\widgets\AuthChoiceItem;


class MyAuthChoice extends AuthChoice
{

    /**
     * Outputs client auth link.
     * @param ClientInterface $client external auth client instance.
     * @param string $text link text, if not set - default value will be generated.
     * @param array $htmlOptions link HTML options.
     * @return string generated HTML.
     * @throws InvalidConfigException on wrong configuration.
     */
    public function clientLink($client, $text = null, array $htmlOptions = [])
    {
        $viewOptions = $client->getViewOptions();

        if (empty($viewOptions['widget'])) {
            if ($text === null) {
                $text = Html::tag('span', '', ['class' => 'blabla ' . $client->getName()]);
            }
            if (!isset($htmlOptions['class'])) {
                $htmlOptions['class'] = $client->getName();
            }
            if (!isset($htmlOptions['title'])) {
                $htmlOptions['title'] = $client->getTitle();
            }
            Html::addCssClass($htmlOptions, ['widget' => 'auth-link']);

            if ($this->popupMode) {
                if (isset($viewOptions['popupWidth'])) {
                    $htmlOptions['data-popup-width'] = $viewOptions['popupWidth'];
                }
                if (isset($viewOptions['popupHeight'])) {
                    $htmlOptions['data-popup-height'] = $viewOptions['popupHeight'];
                }
            }
            return Html::a($text, $this->createClientUrl($client), $htmlOptions);
        }

        $widgetConfig = $viewOptions['widget'];
        if (!isset($widgetConfig['class'])) {
            throw new InvalidConfigException('Widget config "class" parameter is missing');
        }
        /* @var $widgetClass Widget */
        $widgetClass = $widgetConfig['class'];
        if (!(is_subclass_of($widgetClass, AuthChoiceItem::className()))) {
            throw new InvalidConfigException('Item widget class must be subclass of "' . AuthChoiceItem::className(). '"');
        }
        unset($widgetConfig['class']);
        $widgetConfig['client'] = $client;
        $widgetConfig['authChoice'] = $this;
        return $widgetClass::widget($widgetConfig);
    }


}

Но теперь виджет не работает, почему? хотя при vardump что виджет AuthChoice и MyAuthChoice показывают один и тот же объект
Что не так то?

rak
Сообщения: 2041
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Как переопределить метод виджета в yii2-authclient?

Сообщение rak »

что значит "виджет не работает"? ошибка появляется какая-то или что?

b.alex
Сообщения: 12
Зарегистрирован: 2019.06.04, 07:13

Re: Как переопределить метод виджета в yii2-authclient?

Сообщение b.alex »

rak писал(а):
2020.01.23, 23:39
что значит "виджет не работает"? ошибка появляется какая-то или что?
Вообще ни каких ошибок но и сам виджет не появляется

yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Как переопределить метод виджета в yii2-authclient?

Сообщение yiiliveext »

b.alex писал(а):
2020.01.24, 08:26
rak писал(а):
2020.01.23, 23:39
что значит "виджет не работает"? ошибка появляется какая-то или что?
Вообще ни каких ошибок но и сам виджет не появляется
Есть хорошая народная песня по этому поводу.

А возьму-ка я в руки деба-а-а-агер
И по коду пройдусь соему-у-у-у
Отловлю все проклятые ба-а-а-а-ги
И пойму что к чему-у-у-у

Ответить