استفاده از پایگاه داده ها در کامپوننت نویسی: تفاوت بین نسخهها
(←ویرایش فایل helloworld.xml) |
|||
| سطر ۱: | سطر ۱: | ||
=مقدمه= | =مقدمه= | ||
| − | در این مقاله آموزشی [http://www.joomlafarsi.com جوملا] چگونگی اتصال و استفاده از [[پایگاه داده]] | + | |
| − | + | در این مقاله آموزشی [http://www.joomlafarsi.com جوملا] چگونگی اتصال و استفاده از [[پایگاه داده]]ها را در [[کامپوننت]] نویسی در [[جوملا]] 2.5 بررسی خواهیم کرد. [[کامپوننت]]ها معمولا محتوای خودشان را با استفاده از پایگاه دادهها مدیریت میکنند و این امکان را به شما میدهند که در فرآیند نصب یا حذف [[کامپوننت]] فایلهای کوئری SQL را اجرا کنید. | |
| − | توجه : اگر سری | + | |
| + | '''توجه''': اگر سری آموزشهای ایجاد [[کامپوننت]] قبلی را دنبال کردهاید میتوانید از کدهای آن استفاده نمایید و در غیر اینصورت کد مربوط به این مقاله آموزشی را میتوانید از لینک انتهای مقاله دانلود نمایید. | ||
| + | |||
=استفاده از sql در هنگام نصب و حذف کامپوننت= | =استفاده از sql در هنگام نصب و حذف کامپوننت= | ||
| − | ایجاد پایگاه | + | |
| − | دو فایل '''admin\sql\install.mysql.utf8.sql''' و '''admin\sql\updates\mysql\0.0.6.sql''' در مسیر و با | + | ایجاد پایگاه دادهها در هنگام نصب [[کامپوننت]] دو فایل '''admin\sql\install.mysql.utf8.sql''' و '''admin\sql\updates\mysql\0.0.6.sql''' در مسیر و با نامهای مشخص شده ایجاد کنید. |
| + | |||
| + | |||
<source lang="sql"> | <source lang="sql"> | ||
DROP TABLE IF EXISTS `#__hello`; | DROP TABLE IF EXISTS `#__hello`; | ||
| سطر ۱۸: | سطر ۲۲: | ||
('DB Good bye World!'); | ('DB Good bye World!'); | ||
</source> | </source> | ||
| + | |||
| + | |||
این فایل installation است و هنگام نصب [[کامپوننت]] اگر در فایل xml (در این مثال helloworld.xml) مشخص کرده باشید اجرا خواهد شد. | این فایل installation است و هنگام نصب [[کامپوننت]] اگر در فایل xml (در این مثال helloworld.xml) مشخص کرده باشید اجرا خواهد شد. | ||
| + | |||
=ویرایش فایل helloworld.xml= | =ویرایش فایل helloworld.xml= | ||
| + | |||
| + | |||
<source lang="xml"> | <source lang="xml"> | ||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||
| سطر ۷۲: | سطر ۸۱: | ||
</install> | </install> | ||
</source> | </source> | ||
| + | |||
=ایجاد فایل همانند فرآیند نصب (همانند مرحله یک)= | =ایجاد فایل همانند فرآیند نصب (همانند مرحله یک)= | ||
| + | |||
ایجاد فایل در '''admin\sql\uninstall.mysql.utf8.sql''' که شامل کدهای زیر باشد. | ایجاد فایل در '''admin\sql\uninstall.mysql.utf8.sql''' که شامل کدهای زیر باشد. | ||
| + | |||
| + | |||
<source lang="sql"> | <source lang="sql"> | ||
DROP TABLE IF EXISTS `#__hello`; | DROP TABLE IF EXISTS `#__hello`; | ||
</source> | </source> | ||
| + | |||
| + | |||
=اضافه کردن یک نوع فیلد جدید= | =اضافه کردن یک نوع فیلد جدید= | ||
| + | |||
به آدرس ''' site\views\hello\tmpl\default.xml''' رفته و کدهای ذیل را در فایل ''' default.xml''' کپی نمایید. | به آدرس ''' site\views\hello\tmpl\default.xml''' رفته و کدهای ذیل را در فایل ''' default.xml''' کپی نمایید. | ||
| + | |||
<source lang="xml"> | <source lang="xml"> | ||
| سطر ۱۰۵: | سطر ۱۲۲: | ||
</metadata> | </metadata> | ||
</source> | </source> | ||
| − | این کد ضمن معرفی یک نوع فیلد جدید برای [[جوملا]] مشخص | + | |
| − | + | ||
| + | این کد ضمن معرفی یک نوع فیلد جدید برای [[جوملا]] مشخص میکند که باید در آدرس '''/administrator/components/com_helloworld/models/fields''' به دنبال فیلد تعریف شده بگردد. | ||
| + | |||
ایجاد فایل '''admin\models\fields\hello.php''' و قرار دادن کد زیر در فایل '''hello.php''' | ایجاد فایل '''admin\models\fields\hello.php''' و قرار دادن کد زیر در فایل '''hello.php''' | ||
| + | |||
<source lang="php"> | <source lang="php"> | ||
| سطر ۱۴۰: | سطر ۱۶۰: | ||
?> | ?> | ||
</source> | </source> | ||
| + | |||
| + | |||
=نمایش یک پیغام= | =نمایش یک پیغام= | ||
| − | + | ||
| − | کلاس '''hellomodelhello''' یک مناسب را نمایش | + | کلاس '''hellomodelhello''' یک مناسب را نمایش میدهد این پیغام برحسب شناسهها محاسبه و نمایش داده میشوند. |
| + | |||
| + | باید به آدرس '''site\models\hello.php ''' رفته و فایل hello.php را به صورت زیر ویرایش کنیم. | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
| سطر ۱۷۲: | سطر ۱۹۸: | ||
?> | ?> | ||
</source> | </source> | ||
| − | به این ترتیب Model از کلاس hellotablehello | + | |
| − | + | ||
| + | به این ترتیب Model از کلاس hellotablehello میپرسد که چه پیغامی را تولید کند. | ||
| + | |||
یک فایل در '''admin\tables\hello.php ''' ایجاد کنید که شامل کدهای زیر باشد. | یک فایل در '''admin\tables\hello.php ''' ایجاد کنید که شامل کدهای زیر باشد. | ||
| + | |||
| + | |||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
| سطر ۱۹۸: | سطر ۲۲۸: | ||
?> | ?> | ||
</source> | </source> | ||
| + | |||
| + | |||
=ایجاد یک بسته نصبی از کامپوننت= | =ایجاد یک بسته نصبی از کامپوننت= | ||
| − | برای ایجاد بسته نصبی از افزونههای [[جوملا]] از فرمت ZIP استفاده میکنیم. جهت ایجاد بسته نصبی از [[کامپوننت]] | + | |
| + | برای ایجاد بسته نصبی از افزونههای [[جوملا]] از فرمت ZIP استفاده میکنیم. جهت ایجاد بسته نصبی از [[کامپوننت]]مان باید فایلها زیر را در یک فولدر خارج از [[جوملا]] آماده کنیم. | ||
| + | |||
<div dir="ltr"> | <div dir="ltr"> | ||
| + | |||
فولدر محتویات [[کامپوننت]] | فولدر محتویات [[کامپوننت]] | ||
| + | |||
<br/><br/> | <br/><br/> | ||
helloworld.xml (فایل نصب کننده) <br/> | helloworld.xml (فایل نصب کننده) <br/> | ||
| سطر ۲۲۰: | سطر ۲۵۶: | ||
admin\tables\hello.php <br/> | admin\tables\hello.php <br/> | ||
</div> | </div> | ||
| − | در صورتی که سری | + | |
| − | + | در صورتی که سری آموزشهای ایجاد [[کامپوننت]] قبلی را دنبال کردهاید میتوانید از کدهای آن استفاده نمایید و در غیر اینصورت کد مربوط به این مقاله آموزشی را میتوانید از لینک انتهای مقاله دانلود نمایید. | |
| − | تا این مرحله باید یک فولدر به نام '''helloworld.zip''' داشته باشیم که شامل | + | |
| − | + | تا این مرحله باید یک فولدر به نام '''helloworld.zip''' داشته باشیم که شامل فایلهای و فولدرهای بالا باشد. | |
| − | سپس | + | |
| − | + | سپس میتوانیم فایل zip بسته نصبی [[کامپوننت]] را از طریق مدیریت افزونهها در [[جوملا]] نصب کنیم. | |
| − | بعد از نصب باید زیر منوی '''آموزش کامپوننت نویسی''' در منوی ''' | + | |
| − | سپس شما | + | بعد از نصب باید زیر منوی '''آموزش کامپوننت نویسی''' در منوی '''کامپوننتها ''' ایجاد شده باشد. |
| + | |||
| + | سپس شما میتوانید در مرورگر آدرس <nowiki>http://localhost/siteRoot/index.php?option=com_hello</nowiki> را وارد کنید تا نتیجه کارتان را مشاهده کنید. نتیجه باید همانند شکل زیر باشد. | ||
| + | |||
| + | |||
[[پرونده: Usgin-database-user page.jpg|center|frame ]] | [[پرونده: Usgin-database-user page.jpg|center|frame ]] | ||
| + | |||
جهت دانلود فایلهای مربوط به این آموزش میتوانید به آدرس Coming soon مراجعه نمایید. | جهت دانلود فایلهای مربوط به این آموزش میتوانید به آدرس Coming soon مراجعه نمایید. | ||
نسخهٔ ۲۹ مهٔ ۲۰۱۳، ساعت ۱۵:۱۰
محتویات
مقدمه
در این مقاله آموزشی جوملا چگونگی اتصال و استفاده از پایگاه دادهها را در کامپوننت نویسی در جوملا 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 را وارد کنید تا نتیجه کارتان را مشاهده کنید. نتیجه باید همانند شکل زیر باشد.
جهت دانلود فایلهای مربوط به این آموزش میتوانید به آدرس Coming soon مراجعه نمایید.
جمع آوری شده توسط :شهاب مطاع پور
|
|
