angularjs — возможно ли передать параметры в ui-router в перенаправлении PHP?

Мне было интересно, можно ли передать параметры в ui-router через редирект PHP?

Например, у меня есть следующее состояние:

    // Registration
.state('registration', {
url: '/registration/:valid',
templateUrl: '../partials/register/registration.php',
controller: 'RegistrationController',
controllerAs: 'Registration',
params: {
valid: null
},
authenticate: false,
data: {
authorizedRoles: [USER_ROLES.all]
}
})

Я пытаюсь передать параметр с помощью перенаправления PHP следующим образом:

// Return success
header( 'Location: http://<...>/registration?valid=true' ); /* Redirect browser */

Но это, похоже, не подхватывает. Я всегда получаю значение по умолчанию valid

Тогда в моем контроллере:

var self = this;
self.valid = $state.params.valid;

Но я всегда получаю значение «undefined» (значение по умолчанию).
Это вообще возможно?

1

Решение

Если вы определяете свой параметр в состоянии url

url: '/registration/:valid'

тогда вам не нужно указывать его в строке запроса, просто передайте его значение. как это:

header( 'Location: http://<...>/registration/true');

В противном случае удалите параметр из URL и просто определите его в объекте params.

.state('registration', {
url: '/registration/',
templateUrl: '../partials/register/registration.php',
params: {
valid: null
},

И используйте свой оригинальный синтаксис в PHP, как это

// Return success
header( 'Location: http://<...>/registration?valid=true' );
0

Другие решения

У вас есть два варианта:

Изменить PHP

// Return success
header( 'Location: http://<...>/registration/true');

Catch — параметр из URL

let params = $location.search('valid');
if (params.valid) {
// do something
}

С уважением!

0