0

私はURLを持っています

/module/controller/action/id/10

そして達成したいのは、ビューのパーシャル内のAタグに対して次のURLを生成することです

/module/controller

だから基本的に私はアクション名と余分なIDパラメータを削除したい

コントローラーから変数を渡すことなく、パーシャル内で $this->url() を使用してそれを行うにはどうすればよいですか?

ありがとう

編集:

わかりましたので、それを行うコードを書くことができました:

<?php
$module = Zend_Controller_Front::getInstance()->getRequest()->getModuleName();
$ctrl   = Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
echo $this->url(array('controller' => $ctrl, 'module' => $module), null, true);
?>

しかし、これはかなり醜い解決策です。誰でもアイデアはありますか?ありがとう

4

2 に答える 2

0

いくつかの解決策があります:

1)モジュール名とコントローラー名をコントローラーから取得し、ビューに送信します(好きではありません)。

2)あなたがしたようにしてください(醜い解決策)。

3) カスタムView Helperを記述します。あなたの解決策の例を以下に示します。

// view helper
class Custom_View_Helper_UrlCustom extends Zend_View_Helper_Abstract
{
  public function urlCustom()
  {
     $module = Zend_Controller_Front::getInstance()->getRequest()->getModuleName();
     $ctrl   = Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
     return '/'.$module.'/'.$ctrl;
  }
}

ヘルパーへのパスを設定します:さまざまな方法でそれを行うための3つのリンクがあります(どのようにしたいかわかりません)

共通ディレクトリから Zend View ヘルパーにアクセスして使用する

SO: Zend: カスタム ビュー ヘルパーをどこに/どのように登録できますか?

SO: Zend ビュー ヘルパー構成パス

// using in `view`
<?php echo $this->urlCustom(); ?>
于 2014-01-14T09:41:11.160 に答える
-1

Bootstrap または任意のプラグインから Zend_Registrymodulecontroller名前を設定し、部分ビューで使用できます。

<?=$this->url(array('controller' => Zend_Registry::get('controller'), 'module' => Zend_Registry::get('module')), null, true);?>
于 2014-01-13T09:41:27.380 に答える