tigo
(Tigokr)
December 22, 2009, 2:04pm
1
Извините, если повторяюсь (искал, но не нашел). Как добавить элементы в mainMenu.
class MainMenu extends CWidget
{
public $items=array();
public function run()
{
$items=array();
$controller=$this->controller;
$action=$controller->action;
foreach($this->items as $item)
{
if(isset($item['visible']) && !$item['visible'])
continue;
$item2=array();
$item2['label']=$item['label'];
if(is_array($item['url']))
$item2['url']=$controller->createUrl($item['url'][0],array_splice($item['url'],1));
else
$item2['url']=$item['url'];
$pattern=isset($item['pattern'])?$item['pattern']:$item['url'];
$item2['active']=$this->isActive($pattern,$controller->uniqueID,$action->id);
$items[]=$item2;
}
$this->render('mainMenu',array('items'=>$items));
}
Вот откуда здесь в $this->items уже установлены значениями?
Вывод print_r($this->items);
Array
(
[0] => Array
(
[label] => Home
[url] => Array
(
[0] => /site/index
)
)
[1] => Array
(
[label] => Contact
[url] => Array
(
[0] => /site/contact
)
)
[2] => Array
(
[label] => Login
[url] => Array
(
[0] => /site/login
)
[visible] =>
)
[3] => Array
(
[label] => Logout
[url] => Array
(
[0] => /site/logout
)
[visible] => 1
)
)
rosko
(A)
December 22, 2009, 2:35pm
2
Они настроены, потому что вызов виджета осуществляется из лэйаут, где указан этот параметр:
<?php
$this->widget('application.components.MainMenu',array(
'items'=>array(
array('label'=>'Home', 'url'=>array('site/index')),
array('label'=>'About', 'url'=>array('site/about')),
array('label'=>'Contact', 'url'=>array('site/contact')),
array('label'=>'Just a page', 'url'=>array('site/page')),
array('label'=>'Login', 'url'=>array('site/login'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'Logout', 'url'=>array('site/logout'), 'visible'=>!Yii::app()->user->isGuest),
array('label'=>'Users', 'url'=>array('user/admin'), 'visible'=>Yii::app()->user->name=='admin'),
) )); ?>
someone
(198506)
December 22, 2009, 2:39pm
3
Выводится $this->items исходя из параметров виджета.
В типовой же сборке, которая идет с фреймворком есть пример кода уже готового, и как пользоваться сразу становится понятно.
Во вьювере лэйаута или отдельном вью описываете:
/protected/views/layout/main.php
<?php $this->widget('application.components.MainMenu',array(
'items'=>array(
array('label'=>'О предприятии', 'url'=>array('/content/about')),
array('label'=>'Продукты и услуги', 'url'=>array('/content/products')),
array('label'=>'Объекты', 'url'=>array('/content/objects')),
array('label'=>'Тендеры', 'url'=>array('/tenders/list')),
array('label'=>'Контактная информация', 'url'=>array('/site/contact')),
),
)); ?>
где array(‘items’) - это и есть соот-ие пункты меню
tigo
(Tigokr)
December 22, 2009, 2:46pm
4
Спасибо большое. Помогли.
Ogr
(Ogr)
July 6, 2010, 12:16pm
5
Проблема с редактированием элементов меню.
В примере в /protected/views/layout/main.php
вношу изменения в
<?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('/site/login'), 'visible'=>Yii::app()->user->isGuest),
array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest),
),
)); ?>
меняю ‘Home’ на ‘Домашняя’ и ‘About’ на ‘О нас’ и эти элементы меню не выводятся (подписи к ним), а ссылки на них остаются. С чем это может быть связано?
zvnman
(Zvnman)
September 7, 2010, 6:10pm
6
Попробуй в config/main.php добавить
'sourceLanguage' => 'en_US',
'language' => 'ru_RU',
'charset' => 'UTF-8',