У меня роутер определен вот так
$router->add("/api/:controller/:action/:params", array(
'controller' => 1,
'action' => 2,
'params' => 3,
'myParameter' => 'test'
));
Итак, я могу получить этот параметр «myParameter» внутри контроллера, как это
$this->dispatcher->getParam("myParameter");
Но я хочу использовать этот параметр в другом классе, который я вызываю из контроллера. Что-то вроде
myCustomClass::test();class myCustomClass {
function test() {
// this is where I need that parameter
}
}
Диспетчер ничего не возвращает, если я позвоню myCustomClass
,
(Конечно, получить значение внутри контроллера и передать его как значение — это решение, но я, вероятно, буду использовать его как минимум для 100 различных действий, поэтому в данном случае это не очень хорошее решение).
Есть ли способ получить этот дополнительный параметр вне области действия контроллера?
Вам необходимо внедрение зависимостей по умолчанию, которое, вероятно, объявлено в index.php.
class myCustomClass {
static function test() {
$request = \Phalcon\DI::getDefault()->get( 'request' );
$request->get("myParameter");
}
}
Также вам не хватает статического слова из функции.
Я не уверен на 100%, но я думаю, что вы получаете доступ к параметрам получения из класса запроса phalcon Http.
$request = new Phalcon\Http\Request();
$request->get("myParameter");