№3 Dars — Shaxsiy widgetimizni yaratishning kichik ko`rinishi.
Bu bo`limda biz o`zimizning birinchi portletimizni ishlab chiqamiz. Foydalanuvchi uchun menu, qaysiki menu ro`yhatini chiqarish, faqat ruxsat berilgan foydalanuvchilar uchun ko`rinadi. Menu 4 elementni o`z ichiga oladi.
- To`gri deb topilgan sharhlar: maqul deb topilgan yozuvlar ro`yhatini chiqaruvchi gipperhavola;
- Yangi yozuv hosil qilish: sahifalardagi qaydlarni yaratadigan sahifasiga o`tuvchi gipperhavola;
- Qaydlarni boshqarish: sahifalardagi qaydlarni boshqarish sahifasiga o`tuvchi gipperhavola ;
- Sistemadan chiqish: tugma bosilganda joriy foydalanuvchi sistemadan chiqib ketadi;
UserMenu classini yaratish.
Foydalanuvchi menu sini portlet qismi ostida UserMenu class yaratamiz. Bu classni biz
/protected/components/UserMenu.php da saqlaymiz.
Yii::import(‘zii.widgets.CPortlet’);
class UserMenu extends CPortlet
{
public function init()
{
$this->title=CHtml::encode(Yii::app()->user->name);
parent::init();
}
protected function renderContent()
{
$this->render(‘userMenu’);
}
}
UserMenu classini CPortlet clasi vorisligi ostida yaratamiz, CPortlet zii kutubxonasidagi class. U init() va renderContent() larni CPortlet classida qayta aniqlaydi.
Birinchi navbatda foydalanuvchining nomini o`rnatadi menu tepasidagi titlega, keyin render buyrug`i orqali shu classning viewiga murojaat qiladi, ya`ni userMenu.
userMenu Viewini yaratish:
Biz hozir userMenu viewini yaratamiz va quyidagicha joyga joylaymiz.
/protected/components/views/userMenu.php
-
-
-
echo CHtml::link(
‘To`g`ri deb topilgan sharxlar’,
array(‘comment/index’)) . ‘ (‘ .
Comment::model()->pendingCommentCount . ‘)’;
?>
-
Ushbu view faylni components dagi papkani ichida view papka yaratib o`sha papkani ichida saqlash kerak bo`ladi. UserMenu Classi shundagina topib oladi.
UserMenu Portletidan foydalanish:
/protected/views/layouts/column2.php
…
…
Bu yerda mehmon bo`lsa UserMenu unga ko`rinmaydi. columns2 faylining sidebar qismiga joyladik, bizga endi bu menu o`ng tomonimizda ko`rinadi. Tayor dizayn ko`rinishida ko`rindai. Buning boisi CPortletda bir qancha stillar biriktirilgan ma`lum taglar uchun, o`sha taglar uchun maxsus o`zining qolipiga solmoqda. Bunda o`zingiz stillar berishingiz mumkin. Buning uchun
/protected/views/layouts/main.php
fayli ichiga o`zimizning css faylimizni chaqiramiz va taglarimizga classlar beramiz. Bu classlar umumiy yii classlari bilan ustma ust tushmasligi kerak. Endi biz yaratilgan menuga o`zimiz hohlagan stillarni berishimiz mumkin.
Yana bir kichik misol:
/protected/components/MyWidget.php
Yii::import(‘zii.widgets.CPortlet’);
class MyWidget extends CPortlet
{
public $testVar;
public $labels = array();
public function init()
{
parent::init();
$this->render(myWidget, array(
‘testVar’ => $this->testVar,
‘labels’ => $this->labels,
));
}
}
/protected/components/views/myWidget.php
echo ‘
‘.$testVar.’
‘; // tagga still berishning qo`pol usuli
echo ‘
echo ‘
- ‘;
- ‘;
echo $label;
echo ‘
foreach($labels as $label)
{
echo ‘
‘;
}
echo ‘
‘;
echo ‘
‘;
?>
Widgetni ishlatish ko`rinishi.
$testVar = ‘Salom men h1 man’;
$label = array(‘qizil’, ‘sariq’, ‘yashil’);
$this->widget(MyWidget, array(‘testVar’=>$testVar, ‘labels’=>$label));
?>
Manba:
Web Dasturlash
№3 Dars — Shaxsiy widgetimizni yaratishning kichik ko`rinishi.