我在当前项目中的所有视图都扩展自一般索引视图,如下所示:
<!DOCTYPE html>
<html>
<head>
<title>TITLE</title>
</head>
{{ stylesheet_link("css/base.css") }}
{{ stylesheet_link("css/layout.css") }}
{{ stylesheet_link("css/skeleton.css") }}
{{ stylesheet_link("css/main.css") }}
{{ stylesheet }}
<body>
<div class="container">
<div class="one columns">
<!-- HERE IS THE NAV-BAR -->
</div>
<div class="sixteen columns">
<hr />
</div>
<div class="one column offset-by-thirteen"><a href="#">{{ english }}</a></div>
<div class="one column"><a href="#">{{ french }}</a></div>
<div class="one column"><a href="#">{{ chinese }}</a></div>
</div>
{{ content() }}
</body>
</html>
所以这个通用索引只是提供了一个导航栏和 3 个链接(英文、法文、中文)。
控制器如下所示:
<?php
use Phalcon\Mvc\Controller;
class ControllerBase extends Controller
{
protected function beforeExecuteRoute($dispatcher)
{
$default_language = "en";
if (!isset($this->persistent->lang)) {
$this->persistent->lang = $default_language;
}
// PROVIDING DATA HERE SUCH LIKE PICTURES
}
protected function afterExecuteRoute($dispatcher)
{
$this->view->url = $this->dispatcher->getControllerName() . "/" . $this->dispatcher->getActionName() . "/" . $this->dispatcher->getParams();
}
}
在受保护的函数中,我尝试获取当前 url。
我的目标是能够通过重新加载当前 url 并更新持久变量来更改语言:
$this->persistent->lang
(例如,通过在重新加载页面时提供参数),我不想加载主页,而是加载当前页面。
在我提供的代码中,我试图通过调用来获取所需的 url:
$this->dispatcher->getControllerName() . "/" . $this->dispatcher->getActionName() . "/" . $this->dispatcher->getParams();
但是getParams()
给我一个空数组...
例如,我有一个控制器AboutController
,它具有以下操作:
resumeAction($author)
所以这个页面的url是:
http://localhost/website/about/resume/bob
但是我给我url
定义的变量而不是.BaseController
about/resume/Array
about/resume/bob
如何获得所需的路径?