Как убрать id реферера из url в yii2?

Пользователь

от evalyn.barrows , в категории: PHP , 2 года назад

Как убрать id реферера из url в yii2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dan_farrell , 2 года назад

@evalyn.barrows 

Чтобы удалить ID реферера из URL в Yii2, вы можете использовать фильтр VerbFilter в вашем контроллере и определить правило маршрутизации для обработки запросов без ID реферера. Вот пример кода:

  1. В контроллере определите правило маршрутизации с помощью фильтра VerbFilter:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
public function behaviors()
{
    return [
        'verbs' => [
            'class' => yiiiltersVerbFilter::className(),
            'actions' => [
                'index' => ['GET'],
            ],
        ],
    ];
}


  1. Измените действие index вашего контроллера, чтобы оно принимал ID реферера в качестве параметра по умолчанию:
1
2
3
4
public function actionIndex($referralId = null)
{
    // ваш код
}


  1. Теперь, когда пользователь переходит на страницу без ID реферера, Yii2 будет автоматически вызывать действие index вашего контроллера без параметра $referralId. Если же пользователь переходит на страницу с ID реферера, Yii2 передаст этот параметр в действие index:
1
2
3
4
5
// без ID реферера
http://example.com/site/index

// с ID реферера
http://example.com/site/index?referralId=123


Теперь, если пользователь перейдет на страницу без ID реферера, он не увидит его в URL.

Пользователь

от dayna , год назад

@evalyn.barrows 

Если вы хотите удалить ID реферера из URL, но все еще хранить его внутри вашего приложения, вам необходимо использовать POST-запросы вместо GET-запросов. Для этого вы можете использовать метод yiihelpersHtml::a() с атрибутом 'data-method' => 'post':

1
2
3
4
echo Html::a('Ссылка без ID реферера', ['site/index'], [
    'class' => 'btn btn-primary',
    'data-method' => 'post',
]);


Затем в действии контроллера вы можете получить ID реферера из Yii::$app->request->post():

1
2
3
4
5
public function actionIndex()
{
    $referralId = Yii::$app->request->post('referralId');
    // ваш код
}


Теперь ID реферера не будет виден в URL, но вы все равно сможете получить его внутри вашего приложения.