Yii でメニューをまとめました (Yii を使用した最初のプロジェクト) は、次のようになります。
$this->widget('zii.widgets.CMenu',array(
'items'=>array(
array('label'=>'Home', 'url'=>array('/')),
array('label'=>'Examples', 'url'=>array('/examples')),
array('label'=>'Contact', 'url'=>array('/contact')),
array('label'=>'FAQ', 'url'=>array('/faq')),
array('label'=>'Blog', 'url'=>array('/blog')),
array('label'=>'Order', 'url'=>array('/order')),
),
));
/examplesなどのこれらの各 URL パスは、 config で定義されたルートであるため、 site/examplesのようには見えません。
ホーム リンクについては、サイトのルート レベルにリンクするようにしています。どうやら、CMenu ウィジェットは最初にCHtml::normalizeUrl()を介して URL を渡し、最終的に現在のページを指すようにします。したがって、例のページにいる場合、ホーム リンクは/examplesを指しています。
これは、 normalizeUrl() が行うことを示しています。
入力パラメーターが空の文字列の場合、現在要求されている URL が返されます。
入力パラメーターが空でない文字列の場合、有効な URL として扱われ、変更なしで返されます。
入力パラメーターが配列の場合は、コントローラー ルートおよび GET パラメーターのリストとして扱われ、CController::createUrl メソッドが呼び出されて URL が作成されます。
空の文字列を渡そうとしましたが、期待どおりに現在のリクエスト URL を指しています。空でない文字列である「/」を渡そうとしましたが、現在のリクエスト URL を指しています。また、配列を渡そうとしましtrim() expects parameter 1 to be string, array given
たが、CMenu が文字列を期待しているため、終了します。
私は Yii のやり方で物事を行おうとしていますが、ホームページに戻るのと同じくらい簡単なことに対処できない場合は、メニューを静的のままにしておくことを真剣に考えています。
TL;DR Yii の CMenu ウィジェットで "/" またはベース ドメインへのリンクを作成するにはどうすればよいですか?