2015-11-01 6 views
0

У меня есть UsersService.jsпередать несколько параметров Angularjs ресурсов

app.factory('UsersService', function($resource) { 
return $resource('api/users/:id', {}, { 
    update: {method:'PUT'}, 
}); 

Наряду с index.php (API с PHP Слим Framework)

... 
$app->get('/users/:id', 'getUser'); 
$app->get('/users/:username', 'getUserByUsername'); 
function getUser(){ ... } 
function getUserByUsername(){ ... } 
... 

Теперь, когда я пытаюсь позвонить где-то UsersService.get({id:15}); Это работает, но когда я пытаюсь позвонить UsersService.get({username:'test'}); Это не сработает ...

Я старался изо всех сил, чтобы найти в Google, но я не мог заставить его работать. Я могу сделать отдельную услугу, чтобы получить пользователя по имени пользователя, но я хотел бы сохранить все это в одной службе, если это возможно.

Пожалуйста, помогите, спасибо!

ответ

0

Вы должны указать угловой ресурс $, откуда получить значение для: username.

Для получения более подробной информации смотрите на documentation

Изменение YOUT UserService.js:

app.factory('UsersService', function($resource) { 
    return $resource('api/users/:id/:username', {id:'@id',username:'@username'}, { 
    update: {method:'PUT'} 
}); 

Edit:

Как ваш PHP скрипт знает, что, когда он получает /users/123 он должен работать первым маршрут, но когда он получает /users/123joe, он должен запустить следующий маршрут? Вы это как-то проверяете? Если нет, вы должны изменить свои маршруты в скрипте php, чтобы быть более понятным.

+0

Спасибо за ответ. Я понял, что невозможно иметь два одинаковых маршрута (даже если у них есть разные параметры: id /: username, потому что это, по-видимому, не имеет значения), поэтому я добавил '' getUserByUsername ': {method:' GET ', url: 'api/userByUsername /: username'}, 'in UsersService.js и в php я добавил' $ app-> get ('/ userByUsername /: username', 'getUserByUsername'); 'и теперь он работает так, как я хотел. – justonequestion

Смежные вопросы