Печать
Категория: CMS Joomla!
Просмотров: 799

Мукаддима

Дар ду дарсҳои пешин мо бо Шумоён сохтани компоненти соддаи model-view-controller – ро аз худ кардем. Дар маҷмуъ компонент аз як намоиш (view) иборат буд, ки додашудаҳоро аз модел – и дар дарси дувум сохташуда мегирифт. Акнун бо модел кор мекунем, ки додашудаҳоро аз ҷадвали анбори маълумот мегирад.

Нишон дода мешавад, тарзи истифодабарии синфи JDatabase барои пайваст шудан ба анбори маълумот.

Гирифтани додашудаҳо.

Модели мо дар айни ҳол аз як метод: getGreeting () иборат мебошад, ки ин метод хело ҳам сода буду танҳо Салом – ро бармегардонад.

Барои кор бо анбори маълумот, Салом-ро ба таҷвали анбои маълумот дохил менамоем.

Дар вақти насби компонент, сохтани чадвал бо сабтҳои Салом бо майдони матни ҳатми мебошад. Чи хел сохтани SQl файл ва кадом сатрҳоро дохил намудан лозим аст ба hello.xml баъдтар диди баромада мешавад.

 

Дар аввал коди Моделро барои гирифтани Саломҳо аз ҷадвали анбори маълумот иваз менамоем.

Дар навбати аввал ба анбори маълумот пайваст шудан лозим аст. Дар Joomla 1.5 ҳамаи параметрҳо барои пайваст шудан мавҷуд хастанд, ки барои кор фармудан аз коди зерин истифода мебарем:

 
$db => JFactory::getDBO();

JFactory – ин синфи таъғирнаёбанда (статический) мебошад, ки барои пайваст шудан ба бисёрии объектҳои система истифода бурда мешавад. Маълумоти муфассалро дар бораи ин синф аз ҳуҷҷатҳои API шинос шудан мумкин аст.

Барои пайваст шудан ба анбори маълумот методи getDBO – ро истифода мебарем.

Ду қадам барои хосил намудани Салом:

1. Дархостро барои гирифтани объекти анбори маълумот нигоҳ медорем.

Барои ин ба функсияи getGreeting() – и Модел таъғирот медарорем, ки дар файли зерин ҷойгир мебошад

component/model/models/hello.php :

function getGreeting()
{
   $db = JFactory::getDBO();
 
   $query = 'SELECT greeting FROM #__hello';
   $db->setQuery( $query );
   $greeting = $db->loadResult();
 
   return $greeting;
}

$db->loadResult() – ин метод дархостро дар анбори маълумот иҷро намуда объекти гирифташударо бармегардонад.

Маълумоти муфассалтарро дар бораи ин метод ва дигар методҳо аз ишораи JDatabase API reference дидан мумкин аст.

Сохтани SQL файли насбшаванда.

Насбкунаки Joomla 1.5 имконияти иҷроиши SQL дархостҳои дар рафти насби компонент лозимиро дорост. Ин дархостҳо дар файли install.sql нигоҳ дошта шуданашон лозим аст.

Барои насбкунии файли SQL се дархост истифода бурда мешавад:

Дар поён ҳамаи се дархостҳо барои файли насбкунанда:

DROP TABLE IF EXISTS `#__hello`;
 
CREATE TABLE `#__hello` (
  `id` int(11) NOT NULL auto_increment,
  `greeting` varchar(25) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT DEFAULT CHARSET=utf8;
 
INSERT INTO `#__hello` (`greeting`) VALUES ('Hello, World!'),
('Bonjour, Monde!'),
('Ciao, Mondo!');

Joomla худаш "#__ " – ро бо префикси ҷадвали анбори маълумоти ҷории MySQL иваз менамояд. Дархости якум тадвали #__hello хориҷ мекунад, ин барои он лозим аст, ки хангоми такроран насб кардани компонент хатогиҳо руй надиҳанд.

Дархости дувум дар ҷадвал у майдон месозад: 1. ‘ID’ – ин майдони калиди мебошад, ки дар ин майдон киматхо якхела намешаванд. 2. `greeting` - сатр бо дарозии 25 рамз , дар он саломҳо нигоҳдошта мешаванд.

Ин дархостҳоро дар файли install.sql нигоҳ медорем ва ба пакаи компонентамон чойгир мекунем. com_hello/admin/install.sql.

Создаем деинсталляционный uninstall.sql файл

При деинсталляции компонента необходимо удалять таблицы, которые были созданы установкой данного, но при этом нужно всегда учитывать, то что пользователь может случайно удалить компонент. Для того чтобы он таким образом не удалил свои данные в таблицах базы данных, необходимо требовать подтверждение такого действия:

DROP TABLE IF EXISTS `#__hello`;
 

Ин дархостҳоро дар файли uninstall.sql нигоҳ медорем ва ин файлро дар дохили каталоги компонентамон нигоҳ медорем: com_hello/admin/uninstall.sql.

Таъғиротҳо ба файли насбшавандаи hello.xml медарорем.

Пеш аз нишондодани кадом файлҳо истифода мешаванд дар вакти насб ва хоричи насб барои ичрои SQL дархостҳо, бояд нишон додан лозим аст. ки ба ин файлҳо ба куҷо нусхабардори карда шаванд.

Хардуи файлҳо бояд дар дар каталоги қисми мудири компонент чойгир карда бошанд.

Баъд ба насбкунак нишон медиҳем, ки кадом файлҳоро истифода барад барои SQL дархост дар вақти насб ва хориҷи насби компонент.

Коди нав барои насбкунаки XML файл:

 
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/component-install.dtd">
<install type="component" version="1.5.0">
   <name>Hello</name>
   <!-- The following elements are optional and free of formatting conttraints -->
   <creationDate>2007 02 22</creationDate>
   <author>John Doe</author>
   <authorEmail>
 Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
 </authorEmail>
   <authorUrl>http://www.example.org</authorUrl>
   <copyright>Copyright Info</copyright>
   <license>License Info</license>
   <!--  The version string is recorded in the components table -->
   <version>Component Version String</version>
   <!-- The description is optional and defaults to the name -->
   <description>Description of the component ...</description>
 
   <!-- Site Main File Copy Section -->
   <files folder="site">
      <filename>index.html</filename>
      <filename>hello.php</filename>
      <filename>controller.php</filename>
      <filename>views/index.html</filename>
      <filename>views/hello/index.html</filename>
      <filename>views/hello/view.html.php</filename>
      <filename>views/hello/tmpl/index.html</filename>
      <filename>views/hello/tmpl/default.php</filename>
      <filename>models/hello.php</filename>
   </files>
   <install>
      <sql>
         <file charset="utf8" driver="mysql">install.sql</file>
      </sql>
   </install>
   <uninstall>
      <sql>
         <file charset="utf8" driver="mysql">uninstall.sql</file>
      </sql>
   </uninstall>   
   <administration>
      <!-- Administration Menu Section -->
      <menu>Hello World!</menu>
      
      <!-- Administration Main File Copy Section -->
      <!-- Note the folder attribute: This attribute describes the folder
         to copy FROM in the package to install therefore files copied
         in this section are copied from /admin/ in the package -->
      <files folder="admin">
   <!-- Site Main File Copy Section -->
         <filename>index.html</filename>
         <filename>admin.hello.php</filename>
         <filename>install.sql</filename>
         <filename>uninstall.sql</filename>
      </files>      
   </administration>
</install>
 
 

Дар вақти насб ва хориҷи насб, атрибути charset ду қимат гирифта метавонад, якум - "utf8" ва агар версия MySQL сервер кодировкаи "utf8" – ро дастгири карда натавонад кимати "non-utf8".

Атрибути driver дар айни ҳол як қимат гирифта метавонад - "mysql". Дар оянда нақшаашон аст, ки имкониятҳои Joomla 1.5 – ро васеътар кунанд ва кор бо анбори маълумоти гуногун имконпазир гардад.

Хулоса

Акнун компонент "Hello" натанҳо бо синфҳои MVC framework, балки бо синфҳои дархости JDatabase низ кор карда метавонад. Шумо аллакай компонентҳои худро бо технологияҳои MVC бо истифодабарии анбори маълумот метавонед созед.