2016-05-02 3 views
1

Мне было интересно, можно ли передавать параметры в 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; 

Но я всегда получаю значение «не определено» (значение по умолчанию). Возможно ли это?

ответ

0

Если вы определяете свой параметр в состоянии 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

Большое спасибо. У меня на самом деле были две другие ошибки с моим кодом (неверный URL-адрес и дополнительный URL-адрес, который выполнялся, о котором я не знал). Однако ваш первый пример (также предложенный @pablorsk) работал на меня, как только я исправил свои другие ошибки. Благодарю. – Riples

0

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

Изменить PHP

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

Поймайте параметра из URL

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

С уважением?!

+0

я уже попробовал первый вариант, но и не увенчались успехом. Кажется, это просто перенаправляется в состояние '.otherwise'. С вашим вторым вариантом, как я могу уловить параметр? В '.state'? – Riples