0

我在当前项目中的所有视图都扩展自一般索引视图,如下所示:

<!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定义的变量而不是.BaseControllerabout/resume/Arrayabout/resume/bob

如何获得所需的路径?

4

1 回答 1

0

但是我给我 url定义的变量而不是.BaseControllerabout/resume/Arrayabout/resume/bob

当您看到Array显示时,这意味着该变量是一个数组,您应该这样访问它。$this->dispatcher->getParams()返回数组的函数也是如此。现在你需要采取行动。您可以像这样检查它的内容:

echo '<pre>';
print_r($this->dispatcher->getParams());
echo '</pre>';

然后您可以通过执行以下操作查看其他数据:

echo '<pre>';
print_r($this->dispatcher->getParam('[name of the param here]'));
echo '</pre>';

只需更改[name of the param here]为您要访问的参数的实际名称。

有关在Phalcon 官方文档中获取参数的更多详细信息。

于 2014-06-08T05:04:24.623 回答