From 3596d31759dcdacd402d1ac16c5698e17d56d324 Mon Sep 17 00:00:00 2001 From: Jordan Doyle Date: Sat, 15 Oct 2016 15:03:08 +0100 Subject: [PATCH] allow page and template routes to typehint a post --- src/Routing/PageRoute.php | 26 ++++++++++++++++++++++++++ src/Routing/TemplateRoute.php | 26 ++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/src/Routing/PageRoute.php b/src/Routing/PageRoute.php index 5641d91..c5a1d88 100644 --- a/src/Routing/PageRoute.php +++ a/src/Routing/PageRoute.php @@ -1,9 +1,11 @@ action['uses']); + $params = $function->getParameters(); + + foreach ($params as $param) { + if ($param->getClass() + && ($param->getClass()->isSubclassOf(Post::class) || $param->getClass()->getName() === Post::class)) { + $builder = $param->getClass()->getMethod('query')->invoke(null); + $post = $builder->find(Wordpress::id()); + + $this->setParameter($param->getName(), $post); + } + } + + return parent::runCallable(); } /** diff --git a/src/Routing/TemplateRoute.php b/src/Routing/TemplateRoute.php index 93cb598..9ec26b3 100644 --- a/src/Routing/TemplateRoute.php +++ a/src/Routing/TemplateRoute.php @@ -1,9 +1,11 @@ action['uses']); + $params = $function->getParameters(); + + foreach ($params as $param) { + if ($param->getClass() + && ($param->getClass()->isSubclassOf(Post::class) || $param->getClass()->getName() === Post::class)) { + $builder = $param->getClass()->getMethod('query')->invoke(null); + $post = $builder->find(Wordpress::id()); + + $this->setParameter($param->getName(), $post); + } + } + + return parent::runCallable(); } /** -- rgit 0.1.5