Мне было интересно, можно ли передать параметры в 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» (значение по умолчанию).
Это вообще возможно?
Если вы определяете свой параметр в состоянии 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' );
У вас есть два варианта:
Изменить PHP
// Return success
header( 'Location: http://<...>/registration/true');
Catch — параметр из URL
let params = $location.search('valid');
if (params.valid) {
// do something
}
С уважением!