現在のプロジェクトのすべてのビューは、次のような一般的なインデックス ビューから拡張されています。
<!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.
目的のパスを取得する方法は?