Affiliate

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
ohmyfgod
Сообщения: 7
Зарегистрирован: 2013.02.04, 20:55

Affiliate

Сообщение ohmyfgod »

Привет всем .
Подскажите как правильней всего реализовать affiliate систему.

Если быть точней меня интересует чтобы на любой странице если в url на 3 позиции присутствует определённые хешы (из базы) то делать некие действия . При этом чтобы это работало в любом контроллере.
т.е.
mysite.com/about/me/*secret_affiliate*
mysite.com/site/add/*secret_affiliate*

Я сейчас пробовал это сделать методом того что использовал в роутинге свой класс который наследовал CBaseUrlRuled (как в мануале http://yiiframework.ru/doc/guide/ru/topics.url, последний абзац) в котором я переопределял метод parseUrl и в нём уже делал проверку из базы , но на выходе я должен возвращать строку с маршрутом и вот в этом загвоздка , так как у меня в роутах прописано много разных правил, а я имею на руках урл я не могу вернуть корректный маршрут.
Примерно так

пользователь заходит на страницу
mysite.com/about/secret_affiliate

в \protected\config\main.php

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

   'urlManager'=>array(
                'urlFormat'=>'path',
                'showScriptName'=>false,
                'rules'=>array(
...
                               'about/me'             => 'site/about',
                               'chek/this'             => 'home/index',
                               'gal'             => 'misc/gallery',
 array(
                        'class' => 'application.components.CustomUrlRule',
                        'connectionID' => 'db',
                    ),
...


в protected\components\CustomUrlRule.php

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

class IssuerUrlRule extends CBaseUrlRule
{

   public function parseUrl($manager,$request,$pathInfo,$rawPathInfo) // в $pathInfo  имеем /about/secret_affiliate
    {
        $uri = explode('/',$pathInfo); 

        if (is_array($uri) )
        {
           // проверяем в базе  $uri[2] , если всё окей  хотим вернуть  маршрут  - site/about' , но на руках имеем только   /about/secret_affiliate
      
        }

...
}
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Affiliate

Сообщение SiZE »

Может сделать по аналогии с http://www.elisdn.ru/blog/39/yii-based- ... e-and-urls ?
Аватара пользователя
ohmyfgod
Сообщения: 7
Зарегистрирован: 2013.02.04, 20:55

Re: Affiliate

Сообщение ohmyfgod »

Нет , такой вариант не подходит , так как там хардкодят языки.
Аватара пользователя
AlexxxT
Сообщения: 59
Зарегистрирован: 2013.02.17, 15:17
Откуда: Kiev

Re: Affiliate

Сообщение AlexxxT »

Расширьте базовый контроллер, в public function beforeAction делайте необходимую вам обработку.
Свои контроллеры наследуйте от расширенного.
IStranger
Сообщения: 36
Зарегистрирован: 2011.11.04, 10:46
Контактная информация:

Re: Affiliate

Сообщение IStranger »

AlexxxT писал(а):Расширьте базовый контроллер, в public function beforeAction делайте необходимую вам обработку.
Свои контроллеры наследуйте от расширенного.
Или как вариант создать отдельный фильтр, в него затолкать логику, а фильтр подключить в нужных контроллерах.
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
Ответить