№3 Dars - Shaxsiy widgetimizni yaratishning kichik ko`rinishi.

№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.

<?php

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

<ul>
<li>

<?php echo CHtml::link('Yangi qayd yaratish',array('post/create')); ?>

</li>

<li>

<?php echo CHtml::link('Qaydlarni boshqarish',array('post/admin')); ?>

</li>

<li>

<?php

echo CHtml::link(

'To`g`ri deb topilgan sharxlar',

array('comment/index')) . ' (' .

Comment::model()->pendingCommentCount . ')';

?>

</li>

<li>

<?php echo CHtml::link('Chiqish',array('site/logout')); ?>

</li>

</ul>

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

<div id="sidebar">

<?php

if(!Yii::app()->user->isGuest)

$this->widget('UserMenu');

?>

</div>

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


<?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


<?php

echo '<h1 style="color:red;">'.$testVar.'</h1>'; // tagga still berishning qo`pol usuli

echo '<div class="class_name">'; // agar class berishni hohlasangiz

echo '<ul class="class_name">';

foreach($labels as $label)

{

echo '<li>';

echo $label;

echo '</li>';

}

echo '</ul>';

echo '</div>';

?>

Widgetni ishlatish ko`rinishi.

<?php

$testVar = 'Salom men h1 man';

$label = array('qizil', 'sariq', 'yashil');

$this->widget(MyWidget, array('testVar'=>$testVar, 'labels'=>$label));

?>

Manba:


JONNY - Texnoman foydalanuvchisi

Muallif haqida

JONNY Arduino, Java, C#, Android, Windows, Linux, Debian, Javascript. O'zbekistonni rivojlantiramiz! Dasturlash orqali vatanimizni yangi marralarga olib chiqamiz.


Blogdagi so‘nggi maqolalar:


Fikrlar 1

JONNY
JONNY
http://texnoman.uz/post/4-dars-rbac-va-faylda-rollar-tasnifi.html 4-dars
Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!