2016-01-03 2 views
0

Я использую следующий код для «Маршрутизация с использованием методов внутри классов:»Добавить маршрут для обработки нескольких запросов HTTP в Слим PHP

$app->any('/contacts', 'Contacts:home'); 

Мой класс выглядит следующим образом:

class Contacts { 
    public function home() { 
     return 'something'; 
    } 
} 

Значение выше код отлично работает для меня, и когда я открываю «http://localhost:3000/contacts»

Проблема заключается в том, когда я пытаюсь справиться multuple HTTP запрос

$app->group('/users/{id:[0-9]+}', function() { 
    $this->map(['GET', 'POST'], '', 'Users'); 
}); 

Есть в любом случае, я могу передать имя класса, такие как Пользователей в приведенном выше псевдокоде и код работает для меня, класса будет что-то вроде:

class Users { 
    function get() { 
     return 'asd'; 
    } 
    function post() { 
     return 'post'; 
    } 
} 

В таком что моя просьба прослушивает соответствующий метод.

+2

[docs] (http://docs.slimframework.com/routing/get/) показывает его как '/ users /: id', а не'/users/{id: whatever} '. Я не использовал Slim, но работает ли синтаксис ': id'? Почему вы добавляете регулярное выражение? –

+0

Регулярное выражение прекрасно работает в SlimPHP, я использовал регулярное выражение, чтобы сказать, что: id может принимать только числа. –

ответ

0

Вам нужно будет создать метод, который сортирует данные текущего маршрута, чем вызывает правильный метод.

Вы можете определить, какой метод использовался при вызове функции $request->getOriginalMethod();, а затем используя функцию call_user_func_array();, которую вы можете назвать, какая из ваших функций подходит для текущего метода.

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