Yii Framework Forum: Матрешка Из Виджетов - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Матрешка Из Виджетов не могу определиться Rate Topic: -----

#1 User is offline   styleroom 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 337
  • Joined: 14-January 12
  • Location:Долгопрудный, Россия

Posted 18 March 2014 - 12:43 AM

всем привет

не могу определиться как правильно поступить
в модуле хочется иметь набор независимых виджетов, которые бы вызывались чем-то централизованным - например главным виджетом

а может сделать компонент или расширение?
I'm sorry for my English...
0

#2 User is offline   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,689
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 18 March 2014 - 05:36 AM

Юзкейс не помешал бы.
God is real unless declared as integer
0

#3 User is offline   styleroom 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 337
  • Joined: 14-January 12
  • Location:Долгопрудный, Россия

Posted 18 March 2014 - 05:44 AM

View PostORey, on 18 March 2014 - 05:36 AM, said:

Юзкейс не помешал бы.

уот из юзкейс?
типа - что это должно будет делать?
I'm sorry for my English...
0

#4 User is offline   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,689
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 18 March 2014 - 06:34 AM

Ну типа пока не очень понятно, что за штуку Вы хотите, и почему, допустим, нельзя вызывать виджеты из контроллера/вьюхи.
God is real unless declared as integer
0

#5 User is offline   styleroom 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 337
  • Joined: 14-January 12
  • Location:Долгопрудный, Россия

Posted 18 March 2014 - 11:43 PM

View PostORey, on 18 March 2014 - 06:34 AM, said:

Ну типа пока не очень понятно, что за штуку Вы хотите.

как и все новички хочу то чего пока не могу и не понимаю сути :lol:
на самом деле мне надо реализовать аутентификацию из соцсетей в своем модуле

есть замечательная штука на уровне расширения и очень простая штука для ламеров
и мне захотелось сделать аутентификацию "попроще" и на понятном мне уровне - на уровне виджетов

то что я хотел - я уже сделал и все работает
НО
как-то самому не очень нравится - код "не ремонтнопригодный"

как есть сейчас = это виджет, который вызывается так =
<?php 
$this->widget('AuthWidget',array(
    'services'=>array(
        'facebook',
        'vk',
        'yandex',
        'odnoklassniki',
        'mail'
    )
)); 
?>

внутри виджета такой run =
public function run()
{ 
   $this->redirect_uri = 'http://mysite.ru'.Yii::app()->request->requestUri;
   sort($this->services);
   foreach($this->services as $val)
   {
      echo $this->Links($val);
   }
   $this->render('myview');
}

ну и соответственно метод Links, который на основе switch формирует ссылки и логику

все работает, но требует = грамотно-профессиональной доработки на основе мнения тех кто умеет больше меня
I'm sorry for my English...
0

#6 User is offline   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,689
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 19 March 2014 - 04:28 AM

Всё еще непонятно.
Куда в этом коде Вы хотите присунуть "главный виджет"?

Понимаете, виджет из виджета вызвать - проблем никаких, но сначала бы понять, зачем это всё и как оно должно работать.
God is real unless declared as integer
1

#7 User is offline   styleroom 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 337
  • Joined: 14-January 12
  • Location:Долгопрудный, Россия

Posted 19 March 2014 - 04:43 AM

View PostORey, on 19 March 2014 - 04:28 AM, said:

Всё еще непонятно.
Куда в этом коде Вы хотите присунуть "главный виджет"?

Понимаете, виджет из виджета вызвать - проблем никаких, но сначала бы понять, зачем это всё и как оно должно работать.

упс...так я жэж вроде написал как это должно работать :unsure:

в представлении отображающем форму авторизации запускаем "главный" виджет,
который на основе поданных в него массива значений,
выводит ссылки для авторизации с помощью указанных социальных сетей

при клике на ссылку появляется поп-ап в котором юзер авторизуется на стороннем сервисе

-------------

теперь-то я осознал, что матрешка мне, видимо, не понадобится

-------

зы: забыл сказать спасибо за подсказку, что вызвать виджет в видежете не проблема
и ставлю плюсик
I'm sorry for my English...
0

#8 User is offline   ORey 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,689
  • Joined: 20-April 09
  • Location:Moscow, Russia

Posted 19 March 2014 - 05:11 AM

Непонятка, собственно, связана вот с чем: в качестве примера Вы упоминаете oauth-авторизацию, а там на основе одного виджета все реализовано.

Штука вот в чем: виджет можно расматривать как мини-контроллер. У него есть своя логика и представления (более того, в некоторых извращенных случаях я ими и формы обрабатывал). В случае oauth логика у Вас будет примерно одна и та же, а вот представления (логин такой, логин сякой) могут различаться, поэтому если и городить огород, то именно в части разделения шаблонов (иначе получится дублирование). Ну и вообще конкретно oauth можно и с одной вьюхой сделать, поскольку страницу логина сервисы сами отдают.

Так-то виджеты много чего умеют: $controller = $this->controller; $action = $controller->action; и понеслась по накатанной в сторону non-mvc ада. Ну, вообще тут можно поспорить, конечно, имеет ли право виджет на какие-то вещи, или нет.
Чисто технически же он имеет доступ ко всему приложению.
God is real unless declared as integer
1

#9 User is offline   styleroom 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 337
  • Joined: 14-January 12
  • Location:Долгопрудный, Россия

Posted 19 March 2014 - 05:28 AM

View PostORey, on 19 March 2014 - 05:11 AM, said:

Непонятка, собственно, связана вот с чем: в качестве примера Вы упоминаете oauth-авторизацию, а там на основе одного виджета все реализовано.

Штука вот в чем: виджет можно расматривать как мини-контроллер. У него есть своя логика и представления (более того, в некоторых извращенных случаях я ими и формы обрабатывал). В случае oauth логика у Вас будет примерно одна и та же, а вот представления (логин такой, логин сякой) могут различаться, поэтому если и городить огород, то именно в части разделения шаблонов (иначе получится дублирование). Ну и вообще конкретно oauth можно и с одной вьюхой сделать, поскольку страницу логина сервисы сами отдают.

Так-то виджеты много чего умеют: $controller = $this->controller; $action = $controller->action; и понеслась по накатанной в сторону non-mvc ада. Ну, вообще тут можно поспорить, конечно, имеет ли право виджет на какие-то вещи, или нет.
Чисто технически же он имеет доступ ко всему приложению.

оооо, спасибо! это слишком умно для меня!
использовать я буду 5 сервисов = 'facebook','vk','yandex','odnoklassniki','mail'
различия в логике хоть и небольшие, но есть

пока пошел по пути отдельных классов для каждого сервиса, где каждый класс основан на одном супер-классе
в этом родительском классе определены все необходимы свойства и методы (как это сделано у перца с хабрхабра)
а в главном виджете я инициируют объекты нужных классов, указывая в конструкторе класса 3 главных параметра
I'm sorry for my English...
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users