0

TbMenu ウィジェットの使用中に実際に URL ルーティングに問題が発生しています。モジュール コントローラへのアクセスに /moduleId/ControllerId/ActionId の形式を使用しています。例を次に示します。

<?php  $this->widget('bootstrap.widgets.TbNavbar', array(
'type'=>'inverse', // null or 'inverse'
'brand'=>'mysite',
'brandUrl'=>'#',
'collapse'=>true, // requires bootstrap-responsive.css
'items'=>array(
    array(
        'class'=>'bootstrap.widgets.TbMenu',
        'items'=>array(
            array('label'=>'Home','url'=>array('/site/index'), 'active'=>true),
            array('label'=>'About', 'url'=>array('/site/page')),
            array('label'=>'Contact us','url'=>array('/site/contact')),
        ),
    ),
    '<form class="navbar-search pull-left" action=""><input type="text" class="search-query span2" placeholder="Search"></form>',
    array(
        'class'=>'bootstrap.widgets.TbMenu',
        'htmlOptions'=>array('class'=>'pull-right'),
        'items'=>array(
            array('label'=>'Sign in', 'url'=>'/user/auth','visible'=>Yii::app()->user->isGuest),
            '---',
           [b] array('label'=>'Profile', 'url'=>'/user/user','visible'=>!Yii::app()->user->isGuest, 'items'=>array([/b]
                [b]array('label'=>'Settings', 'url'=>'user/user/index'),[/b]
                [b]array('label'=>'Logout', 'url'=>'user/user/logout')[/b],

            )),
        ),
    ),
),

最後の 3 行が問題の原因です。ホーム、ページ、お問い合わせ (Yii によって自動生成されるサイト コントローラー アクションを使用) をクリックした後にこれらのリンクにアクセスしようとすると、ルートが既存の行に追加されます。モジュールへの新しいURL を作成する代わりに/index.php/site/index/user/user/index,これをURLとして同じリンクに再度アクセスすると、**localhost/mysite/index/user/user/index/user/user/index if iもう一度クリックして、別のものを何度も追加します..しかし、奇妙なのは、CMenuで正常に動作することです.ここでは、正常に動作するCMenuのスニペットです.

<?php $this->widget('zii.widgets.CMenu',array(
                    'items'=>array(
                            array('label'=>'Home', 'url'=>array('/site/index')),
                            array('label'=>'About', 'url'=>array('/site/page', 'view'=>'about')),
                            array('label'=>'Contact', 'url'=>array('/site/contact')),
                            array('label'=>'Login', 'url'=>array('//user/auth'), 'visible'=>Yii::app()->user->isGuest),
                            array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('//user/user/logout'), 'visible'=>!Yii::app()->user->isGuest),
                            array('label'=>'My profile ', 'url'=>array('/user/user/'), 'visible'=>!Yii::app()->user->isGuest),
                    ),
            )); ?>

これらのリンクがサブメニューであるという事実が原因である可能性があると想定していますが、これらのリンクの最初のリンクはサブメニューではなく、同じ問題があるため、わかりません!ありがとうございました

4

1 に答える 1

2

TbMenu コンポーネントは CHtml::link を使用してリンクを表示しています...

CHtml::link(label, url, options)

CHtml::link メソッドには 1 つのチェックがあります

if url is an array ... then use controller->createUrl(...) method
if url is a string ... then just return that string.

だから、@dInGd0nGの提案がうまくいくと思います。そうでない場合は、配列を使用する必要があります...次のようなものです(プレフィックス / を忘れないでください)

array('label'=>'Settings', 'url'=> array('/user/user/index') ),
array('label'=>'Logout', 'url'=> array('/user/user/logout') )
于 2012-09-25T06:48:10.700 に答える