1

次のコードがあります。

<ul class="navigation">
    <?php foreach( $this->navigation as $item ): ?>
    <li class="<?php if($item->isActive()){echo " active";}?>">
            <div class="shadow"></div>
            <div class="tab"><?php echo $this->htmlLink($item->getHref(), $this->translate($item->getLabel())) ?></div>

      </li>
    <?php endforeach; ?>
</ul>

$item->isActive()、ホームページに対してのみ意図したとおりに機能します。他のすべてのページでは、class="active" は表示されません。

アップデート:

アプリケーションは、次のようなルートを使用します。

// Routes --------------------------------------------------------------------
  'routes' => array(
    'home' => array(
      'route' => '/',
      'defaults' => array(
        'module' => 'core',
        'controller' => 'index',
        'action' => 'index'
      )
    ),
    'core_home' => array(
      'route' => '/',
      'defaults' => array(
        'module' => 'core',
        'controller' => 'index',
        'action' => 'index'
      )
    ),
    'confirm' => array(
      'route'=>'/confirm',
      'defaults' => array(
        'module'=>'core',
        'controller'=>'confirm',
        'action'=>'confirm'
      )
    ),

    // Admin - General
    'core_admin_settings' => array(
      'route' => "admin/core/settings/:action/*",
      'defaults' => array(
        'module' => 'core',
        'controller' => 'admin-settings',
        'action' => 'index'
      ),
      'reqs' => array(
        'action' => '\D+',
      )
    ),
  )

ルートはmanifest.phpというファイルに保存されます

4

2 に答える 2

1

Zend_Navigation_Page_Mvcオブジェクトの作成中にカスタム ルートを使用している場合は、Module、Controller、および Action を明示的に設定する必要があります。

Zend_Navigation ドキュメントExample #4 Using routesを参照してください。

注:ページでルート プロパティを使用する場合は、ルートが定義するデフォルト パラメータ (モジュール、コントローラ、アクションなど) も指定する必要があることに注意してください。そうしないと、isActive() メソッドはページがアクティブです。

ルートを使用していない場合は、コードに関する詳細情報を提供してください。


更新について:

Zend_Navigations は次のようにする必要があります

new Zend_Navigation(array(
    array(
        'label'     => 'Home',
        'module'    => 'core',
        'controller'=> 'index',
        'action'    => 'index',
        'route'     => 'core'
    ),
    array(
        'label'     => 'Admin Settings',
        'module'    => 'core',
        'controller'=> 'admin-settings',
        'action'    => 'index',
        'route'     => 'core_admin_settings'
    ),
    array(
        'label'     => 'User Administration',
        'module'    => 'core',
        'controller'=> 'admin-settings',
        'action'    => 'users',
        'route'     => 'core_admin_settings'
    ),
));

次に、 isActive() メソッドが期待どおりに機能するはずです。

于 2011-06-16T21:23:45.320 に答える
0

モジュール、コントローラー、アクション変数を指定しないと残念ながら isActive() メソッドは使えません

于 2011-06-16T17:00:43.143 に答える