Қаламдан олдин ўчиргични тугатиб қўйма!

Кўп Бериладиган Саволлар

  1. http://kompmodel.uz/bosh.htm
  2. Yiiframework 1 версияси бўйича кўп ишлатиладиган маълумотлар:
    1. Баъзан CRUD даги меню бизнинг сайт шаблонимизга тушмайди. Мен шундай пайтларда Breadcrumb да Ўчириш ссылкасини бўлишини хоҳлардим. Бунга эришдим ҳам. Интернетдан излаб топа олмадим, лекин оддий скрипт билан ҳозирча амалладим. Бунинг учун қуйидаги ўзгаришларни киритдим:
      layout/main.php файлида
      <?php if(isset($this->breadcrumbs)):?>
      	<?php $this->widget('zii.widgets.CBreadcrumbs', array(
      		'links'=>$this->breadcrumbs,
      	)); ?>
      	<?php endif?>
      коди бор. Шу кодни
      <?php if(isset($this->breadcrumbs)):?>
      	<?php $this->widget('zii.widgets.CBreadcrumbs', array(
      		'links'=>$this->breadcrumbs,
      		'htmlOptions'=>array(
      			'class'=>'breadcrumbs',
      			'id'=>'brcr',
      		),
      	)); ?>
      	<?php endif?>
      га ўзгартирдим. Яъни Breadcrumb чиқариладиган div га id бердим ва шу id билан номланган div ни оҳирига JavaScript ёрдамида
      <script language="javascript">
      	brcr.innerHTML=brcr.innerHTML+' » <?php
      	echo CHtml::link(Yii::t("strings","Ўчириш"), '#', array(
      			'submit'=>array('delete', "id"=>$model->id),
      			/**/
      			'params'=>array(
      				'returnUrl'=>$this->createUrl('index'),
      			),
      			/**/
      			'csrf'=>true,
      			'confirm' => Yii::t("strings",'Ўчиришни хоҳлайсизми?')
      		)
      	);
      
      	?>';
      </script>
      ни қўшдим. Бу скрипт қайси саҳифада керак бўлса шу саҳифа оҳирига қўшиб қўйилса етарли бўлади. бу ерда returnUrl - ўчирилганидан кейин қайси саҳифага қайтишини билдиради. Одатда ёзилмаса admin га қайтади.
       
    2. Агар CGridView ишлатсак бизга жадвал кўринишида маълумот берилади. Бу widget дан CRUD нинг admin.php скриптида фойдаланилган Дастлабки холати:
      <?php
      	$this->widget('zii.widgets.grid.CGridView', array(
      		'id'=>'faculty-arm-grid',
      		'dataProvider'=>$model->search(),
      		'filter'=>$model,
      	'columns'=>array(
      		'id',
      
      кўринишида бўлади. Агар саҳифадаги item лар сонини кўпайтириш ёки камайтириш керак бўлса, унда қуйидаги кўринишда скриптдан фойдаланиш мумкин
      <?php
      	$mymodel = $model->search();
      	$mymodel->pagination->pageSize=2;
      	$this->widget('zii.widgets.grid.CGridView', array(
      		'id'=>'faculty-arm-grid',
      		'dataProvider'=>$mymodel,
      		'filter'=>$model,
      	'columns'=>array(
      		'id',
      
    3. Агар CGridView виджетидан фойдаланилган бўлса, ўзгартириш, кўриш, ўчириш тугмалари учун опцияларни фойдаланувчи ўзи бериши мумкин. Бунинг учун тугмаларни эълон қилиш майдонида айни тугмага хос бўлган опция киритилади, масалан, CRUD яратган admin.php файлида дастлабки код берилиши қуйидагича эди:
      	----
      			array(
      			'header'=>Yii::t("strings",'Фан номи'),
      			'name'=>'subject_id',
      			'value'=>'isset($data->subject->name)?$data->subject->name:"Фанга бириктирилмаган"',
      			'filter'=>Yii::getList(SubjectArm::model()),
      		),
      		array(
      			'class'=>'CButtonColumn',
      		),
      	----
      ўзгартириш учун, масалан, қуйидагича ўзгартириш киритамиз
      	----
      			array(
      			'header'=>Yii::t("strings",'Фан номи'),
      			'name'=>'subject_id',
      			'value'=>'isset($data->subject->name)?$data->subject->name:"Фанга бириктирилмаган"',
      			'filter'=>Yii::getList(SubjectArm::model()),
      		),
      		array(
      			'class'=>'CButtonColumn',
      			'updateButtonOptions'=>array('class'=>'update','target'=>'updateform')
      		),
      	----
    4. CListView орқали рўйҳат ташкил қилинганда (одатда CRUD орқали қилинганда actionIndex функциясига жойланади) рўйҳатдаги item лар сонини саҳифаларда нечта чиқишини белгилаш учун контроллерда қуйидаги ўзгариш қилинади:
      Дастлабки холат:
      	public function actionIndex()
      	{
      		$this->layout='//layouts/column1';
      		$dataProvider=new CActiveDataProvider('FacultyArm');
      		$this->render('index',array(
      		'dataProvider'=>$dataProvider,
      		));
      	}
      
      Кейинги холат:
      	public function actionIndex()
      	{
      		$this->layout='//layouts/column1';
      		$dataProvider=new CActiveDataProvider('FacultyArm');
      		$dataProvider->pagination->pageSize=50;
      		$this->render('index',array(
      		'dataProvider'=>$dataProvider,
      		));
      	}
      
    5. CListView орқали рўйҳат ташкил қилинганда рўйҳатдаги item лар сони кўп бўлса, pager хосил бўлади. Бу pager да дастлабки ва охирги саҳифаларга ўтиш по умолчанию яширин бўлади, чунки уларнинг class селекторида display:none бўлади. Агар уни кўрсатишни хохласак, қуйидаги ўзгаришларни қилишимиз керак:
      Дастлабки холат:
      <?php $this->widget('zii.widgets.CListView', array(
      	'dataProvider'=>$dataProvider,
      	'itemView'=>'_view',
      
      Кейинги холат:
      	<?php $this->widget('zii.widgets.CListView', array(
      	'dataProvider'=>$dataProvider,
      	'pager'=>array(
      		'firstPageCssClass'=>'previous',
      		'firstPageLabel'=>'<<',
      		'lastPageCssClass'=>'previous',
      		'lastPageLabel'=>'>>',
      	),
      	'itemView'=>'_view',
      
    6. CGridView орқали рўйҳат ташкил қилинганда admin.php да рўйхатга фильтр учун id кодидан эмас, шу id билан ташқи калит майдон орқали боғланган жадвал маълумотларини олиш мумкин. Бунинг учун қуйидаги ўзгаришларни киритилади
      Дастлабки холат:
      <?php $this->widget('zii.widgets.grid.CGridView', array(
      	'id'=>'student-grid',
      	'dataProvider'=>$model->search(),
      	'filter'=>$model,
      	'columns'=>array(
      		'id',
      		'lname',
      		'fname',
      		'mname',
      		'group_id',
      
      Кейинги холат:
      <?php $this->widget('zii.widgets.grid.CGridView', array(
      	'id'=>'student-grid',
      	'dataProvider'=>$model->search(),
      	'filter'=>$model,
      	'columns'=>array(
      		'id',
      		'lname',
      		'fname',
      		'mname',
      		array(
      			'header'=>Yii::t("strings",'Гуруҳ'),
      			'name'=>'group_id',
      			'value'=>'$data->group->name',
      			'filter'=>Yii::getList(Group::model()),
      		),
      
    7. CViewAction - яъни Controller га Action қўшиш.
      Агар сўровда масалан, /group/student?page=murodjon кўринишида қатор ёзилишини хоҳласангиз GroupContrloller контроллерида қуйидаги қаторлар бўлиши керак
      class GroupController extends Controller
      {
      . . . . . . . . . . . . . . . . .
      	public function actions()
      		{
      			return array(
      				'student'=>array(
      					'class'=>'CViewAction',
      					'basePath'=>'students',
      					'viewParam'=>'page',
      					'layout'=>'column1',
      				),
      			);
      		}
      . . . . . . . . . . . . . . . . .
      
      бунда, murodjon.php файли /views/group/students папкасида жойлашади. Бу саҳифа эса /views/layouts/column1.php да жойлашган Layout да акс этади.
  3. Linux Centos бўйича кўп ишлатиладиган маълумотлар:
    1. Linux Centos 7 да меню по умолчаниюни белгилаш керак бўлса қуйидаги ишларни амалга оширинг:

      # awk -F\' '$1=="menuentry " {print i++ " : " $2}' /boot/efi/EFI/grub.cfg
      бу команда орқали менюларни номи ва тартиб рақамини билиб олишингиз мумкин

      Фараз қилайлик, тахминан мана бундай меню хосил бўлди:
      0 : Virtuozzo 7 (3.10.0-693.21.1.vz7.47.4)
      1 : Virtuozzo 7 (3.10.0-693.21.1.vz7.46.7)
      2 : Virtuozzo 7 (3.10.0-693.21.1.vz7.46.4)
      3 : Virtuozzo 7 (3.10.0-693.17.1.vz7.43.10)
      4 : Virtuozzo (3.10.0-693.11.6.vz7.40.4) 7.0.6
      5 : Virtuozzo (0-rescue-c6f435f377da4e8fa46dc006ea3fc061) 7.0.6

      Менюни кўриб олганингиздан кейин керакли менюни default га қўйиш учун ушбу буйруқни ёзишингиз мумкин:
      # grub2-set-default 3
      ёки
      # grub2-set-default "Virtuozzo 7 (3.10.0-693.17.1.vz7.43.10)"

      Юқоридаги иккала буйруқ ҳам бир маънони англатади. Эътибор берсангиз, менюдаги "Virtuozzo 7 (3.10.0-693.17.1.vz7.43.10)" ёзуви тўғрисида 3 рақами турибди

    2. Linux Centos 7 да паролни алмаштириш керак булса куйидаги буйрукни киритинг:

      # sudo passwd <foydalanuvchi>
      бу команда бажарилганда
      [sudo] password for <foydalanuvchi>
      хосил бўлди. Бу ерда фойдаланувчининг жорий пароли киритилади. (Чунки паролни узгартираётган одам шу фойдаланувчи паролини билиши керак, акс холди хохлаган одам бировнинг паролини узгартириб узиники килиб олиши мумкин булар эди) Парол киритилиб enter тугмаси босилгандан сунг,
      Changing password for user <foydalanuvchi>
      New password:

      хосил булади Янги паролни киритганингиздан кейин
      Retype new password:
      хосил булади. Бу ерга янги паролни кайта киритилади. Агар парол алмаштирилган булса
      passwd: all authentication tokens updated successfully
      хабарини экранингизда курасиз
    3. Linux Centos 7 да boot ни кушиш керак булса:

      1. Windows системаси бор ёки йуклигини текширамиз:
        sudo grub2-mkconfig > /dev/null
      2. Хар эхтимолга карши, нусха олиб турамиз:
        sudo cp /boot/efi/EFI/centos/grub.cfg /boot/efi/EFI/centos/grub2.cfg
      3. Юкловчи тизимни янгилаймиз:
        sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
    4. CentOS тизимида харфларни /usr/share/X11/xkb/symbols/ru
  4. Керакли сайтлар номлари ва манзиллари:
    1. Телеграмда фойдаланиладиган смайликларнинг HTML кодлари - https://snipp.ru/handbk/emoji#link-flagi
    2. Телеграмда фойдаланиладиган смайликларнинг HTML кодлари - https://apps.timwhitlock.info/emoji/tables/unicode
    3. Телеграмда фойдаланиладиган смайликларнинг HTML кодлари - https://www.unicode.org/emoji/charts/full-emoji-list.html#1f600
    4. Телеграмда фойдаланиладиган байроқ HTML кодлари - https://emojio.ru/flags.html