استفاده از پایگاه داده ها در کامپوننت نویسی: تفاوت بین نسخه‌ها   

از دانشنامه جوملا فارسی - مامبو فارسی
پرش به: ناوبری، جستجو
(صفحه‌ای جدید حاوی «=مقدمه= در این مقاله آموزشی [http://www.joomlafarsi.com جوملا] چگونگی اتصال و استفاده از [[...» ایجاد کرد)
 
(ویرایش فایل helloworld.xml)
سطر ۴۰: سطر ۴۰:
 
</sql>
 
</sql>
 
</install><!-- اجرا هنگام فرآیند نصب -->
 
</install><!-- اجرا هنگام فرآیند نصب -->
<uninstall><!-- اجرا هنگام فرآیند نصب -->
+
<uninstall><!-- اجرا هنگام فرآیند حذف -->
 
<sql>
 
<sql>
 
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
 
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
سطر ۷۲: سطر ۷۲:
 
</install>
 
</install>
 
</source>
 
</source>
 +
 
=ایجاد فایل همانند فرآیند نصب (همانند مرحله یک)=
 
=ایجاد فایل همانند فرآیند نصب (همانند مرحله یک)=
 
ایجاد فایل در '''admin\sql\uninstall.mysql.utf8.sql''' که شامل کدهای زیر باشد.
 
ایجاد فایل در '''admin\sql\uninstall.mysql.utf8.sql''' که شامل کدهای زیر باشد.

نسخهٔ ‏۲۶ مهٔ ۲۰۱۳، ساعت ۲۱:۵۲

مقدمه

در این مقاله آموزشی جوملا چگونگی اتصال و استفاده از پایگاه داده ها را در کامپوننت نویسی در جوملا 2.5 بررسی خواهیم کرد. کامپوننت ها معمولا محتوای خودشان را با استفاده از پایگاه داده ها مدیریت میکنند و این امکان را به شما میدهند که در فرآیند نصب یا حذف کامپوننت فایلهای کوئری SQL را اجرا کنید.
توجه : اگر سری آموزش های ایجاد کامپوننت قبلی را دنبال کرده اید میتوانید از کدهای آن استفاده نمایید و در غیر اینصورت کد مربوط به این مقاله آموزشی را میتوانید از لینک انتهای مقاله دانلود نمایید.

استفاده از sql در هنگام نصب و حذف کامپوننت

ایجاد پایگاه داده ها در هنگام نصب کامپوننت دو فایل admin\sql\install.mysql.utf8.sql و admin\sql\updates\mysql\0.0.6.sql در مسیر و با نامهای مشخص شده ایجاد کنید. <source lang="sql"> DROP TABLE IF EXISTS `#__hello`; CREATE TABLE `#__hello` ( `id` int(11) NOT NULL AUTO_INCREMENT, `greeting` varchar(25) NOT NULL, PRIMARY KEY (`id`) );

INSERT INTO `#__hello` (`greeting`) VALUES ('DB Hello World!'), ('DB Good bye World!'); </source> این فایل installation است و هنگام نصب کامپوننت اگر در فایل xml (در این مثال helloworld.xml) مشخص کرده باشید اجرا خواهد شد.

ویرایش فایل helloworld.xml

<source lang="xml"> <?xml version="1.0" encoding="utf-8"?> <install type="component" version="2.5"> <name>hello</name> <creationDate>2013-05-26</creationDate> <author>Shahab Matapour</author> <authorEmail>[email protected]</authorEmail> <authorUrl>http://www.joomlafarsi.com</authorUrl> <copyright>Copyright Info</copyright> <license>License Info</license> <version>1.01</version> <description>Hello World Test Component ...</description> <install> <sql> <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file> </sql> </install> <uninstall> <sql> <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file> </sql> </uninstall>

<files folder="site"> <filename>index.html</filename> <filename>hello.php</filename> <filename>controller.php</filename> <folder>views</folder> <folder>models</folder> </files> <administration> <menu img="components/com_proforms/images/love.png" >کامپوننت آموزشی</menu>

<files folder="admin"> <filename>index.html</filename> <filename>hello.php</filename> <folder>sql</folder> <folder>tables</folder> <folder>models</folder> </files> </administration> </install> </source>

ایجاد فایل همانند فرآیند نصب (همانند مرحله یک)

ایجاد فایل در admin\sql\uninstall.mysql.utf8.sql که شامل کدهای زیر باشد. <source lang="sql"> DROP TABLE IF EXISTS `#__hello`; </source>

اضافه کردن یک نوع فیلد جدید

به آدرس site\views\hello\tmpl\default.xml رفته و کدهای ذیل را در فایل default.xml کپی نمایید.

<source lang="xml"> <?xml version="1.0" encoding="utf-8"?> <metadata> <layout title="New Hello Menu Item"> <message>توضیحات موبوط به آیتم منوی کامپوننت</message> </layout> <fields name="request" addfieldpath="\administrator\components\com_hello\models\fields" > <fieldset name="request"> <field name="id" type="hello" label="Hello Field Label" description="Desc of Hello Field Label" default="1" > <option value="1">1.Hello World</option> <option value="2">2.Good Bye</option> </field> </fieldset> </fields> </metadata> </source> این کد ضمن معرفی یک نوع فیلد جدید برای جوملا مشخص میکند که باید در آدرس /administrator/components/com_helloworld/models/fields به دنبال فیلد تعریف شده بگردد.
ایجاد فایل admin\models\fields\hello.php و قرار دادن کد زیر در فایل hello.php

<source lang="php"> <?php // No direct access to this file defined('_JEXEC') or die('Restricted Access'); jimport('joomla.form.helper'); JFormHelper::loadFieldClass('list'); class JFormFieldHello extends JFormFieldList { protected $type='HELLOWORLD'; protected function getOptions() { $db=JFactory::getDBO(); $query=$db->getQuery(true); $query->select('id,greeting'); $query->from('#__hello'); $db->setQuery((string)$query); $message=$db->loadObjectList(); $options=array(); if ($messages) { foreach($messages as $message) { $options[] = JHtml::_('select.option', $message->id, $message->greeting); } } $options = array_merge(parent::getOptions(), $options); return $options; } } ?> </source>

نمایش یک پیغام


کلاس hellomodelhello یک مناسب را نمایش میدهد این پیغام برحسب شناسه ها محاسبه و نمایش داده میشوند. باید به آدرس site\models\hello.php رفته و فایل hello.php را به صورت زیر ویرایش کنیم. <source lang="php"> <?php // No direct access to this file defined('_JEXEC') or die('Restricted access'); // import Joomla modelitem library jimport('joomla.application.component.modelitem'); class HelloModelHello extends JModelItem { protected $msg; public function getTable($type = 'Hello', $prefix = 'HelloTable', $config = array()) { return JTable::getInstance($type, $prefix, $config);} public function getMsg() { if(!isset($this->msg)) { $id=JRequest::getInt('id',1); // Get a HelloTableHello instance $table = $this->getTable(); // Load the message $table->load($id); // Assign the message $this->msg = $table->greeting; } return $this->msg; } } ?> </source> به این ترتیب Model از کلاس hellotablehello میپرسد که چه پیغامی را تولید کند
یک فایل در admin\tables\hello.php ایجاد کنید که شامل کدهای زیر باشد. <source lang="php"> <?php // No direct access defined('_JEXEC') or die('Restricted access'); // import Joomla table library jimport('joomla.database.table'); /**

  • Hello Table class
  • /

class HelloTableHello extends JTable { /**

  • Constructor
  • @param object Database connector object
  • /

function __construct(&$db) { parent::__construct('#__hello', 'id', $db); } } ?> </source>

ایجاد یک بسته نصبی از کامپوننت

برای ایجاد بسته نصبی از افزونه‌های جوملا از فرمت ZIP استفاده می‌کنیم. جهت ایجاد بسته نصبی از کامپوننت مان باید فایل‌ها زیر را در یک فولدر خارج از جوملا آماده کنیم.

فولدر محتویات کامپوننت

helloworld.xml (فایل نصب کننده)
site\hello.php
site\index.html
site\controller.php
site\views\hello\view.html.php
site\views\hello\tmpl\default.php
site\views\hello\tmpl\default.xml
site\models\hello.php

admin\hello.php
admin\index.html
admin\sql\install.mysql.utf8.sql
admin\sql\updates\mysql\0.0.6.sql
admin\sql\uninstall.mysql.utf8.sql
admin\models\fields\hello.php
admin\tables\hello.php

در صورتی که سری آموزش های ایجاد کامپوننت قبلی را دنبال کرده اید میتوانید از کدهای آن استفاده نمایید و در غیر اینصورت کد مربوط به این مقاله آموزشی را میتوانید از لینک انتهای مقاله دانلود نمایید.
تا این مرحله باید یک فولدر به نام helloworld.zip داشته باشیم که شامل فایلهای و فولدرهای بالا باشد.
سپس میتوانیم فایل zip بسته نصبی کامپوننت را از طریق مدیریت افزونه ها در جوملا نصب کنیم.
بعد از نصب باید زیر منوی آموزش کامپوننت نویسی در منوی کامپوننت ها ایجاد شده باشد. سپس شما میتوانید در مرورگر آدرس http://localhost/siteRoot/index.php?option=com_hello را وارد کنید تا نتیجه کارتان را مشاهده کنید. نتیجه باید همانند شکل زیر باشد.

Usgin-database-user page.jpg

جهت دانلود فایل‌های مربوط به این آموزش می‌توانید به آدرس Coming soon مراجعه نمایید.


جمع آوری شده توسط :شهاب مطاع پور

Indent support.png
هر گونه سوال و یا مشکلی در این رابطه دارید، می‌توانید در انجمن تخصصی تیم جوملا فارسی جستجو کرده و در صورت عدم دریافت نتیجه مورد نظر، سوال جدیدی را مطرح کنید.
8.pngاستفاده از مطالب دانشنامه جوملا فارسی - مامبو فارسی با ذکر منبع ( دانشنامه جوملا فارسی ) و لینک مستقیم به http://docs.joomlafarsi.com بلامانع است.