diff --git a/modules/backend/classes/BackendController.php b/modules/backend/classes/BackendController.php index ec61e09ee..ea5b2172c 100644 --- a/modules/backend/classes/BackendController.php +++ b/modules/backend/classes/BackendController.php @@ -61,7 +61,7 @@ class BackendController extends ControllerBase if ($controllerObj = $this->findController($controllerClass, $action, Config::get('cms.pluginsDir', '/plugins'))) return $controllerObj->run($action, $controllerParams); } - + /* * Fall back on Cms controller */ diff --git a/modules/cms/classes/Controller.php b/modules/cms/classes/Controller.php index fb7eb6e11..90828ae52 100644 --- a/modules/cms/classes/Controller.php +++ b/modules/cms/classes/Controller.php @@ -106,9 +106,9 @@ class Controller extends BaseController * If the parameter is omitted, the current URL used. * @return string Returns the processed page content. */ - public function run($url = null) + public function run($url = '/') { - if (!$url) + if ($url === null) $url = Request::path(); if (!strlen($url)) @@ -690,8 +690,13 @@ class Controller extends BaseController if ($routePersistence) $parameters = array_merge($this->router->getParameters(), $parameters); - $url = $this->router->findByFile($name, $parameters); - return ($url) ? URL::to($url) : null; + if (!$url = $this->router->findByFile($name, $parameters)) + return null; + + if (substr($url, 0, 1) == '/') + $url = substr($url, 1); + + return URL::action('Cms\Classes\Controller@run', ['slug' => $url]); } /**