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、次のアクションを持つcontroller があります。

resumeAction($author)

したがって、このページの URL は次のとおりです。

http://localhost/website/about/resume/bob

urlしかし、 my BaseControllergive meで定義された変数about/resume/Arrayは not about/resume/bob.

目的のパスを取得する方法は?

4

1 に答える 1

0

urlしかし、 my BaseControllergive me で定義された変数about/resume/Arrayは not about/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 に答える