استفاده از پایگاه داده(بخش دوم)

استفاده از پایگاه داده(بخش دوم)

سلام دوستان با بخش دوم در خدمتتونییم
خب مستقیم بریم سر اموزش

فایل admin/sql/uninstall.mysql.utf8.sql

این فایل زمانی که می خواهید کامپوننت را پاک کنید، استفاده خواهد شد.

با ویرایشگر دلخواهتان فایل admin/sql/uninstall.mysql.utf8.sql را با محتوای زیر، ایجاد نمایید:

DROP TABLE IF EXISTS `#__helloworld`;

توجه: توجه داشته باشید که برای اجرای این فایل حتما میبایست دستورات مناسب در فایل helloworld.xml قرار داده شده باشد.


فایل site/views/helloworld/tmpl/default.xml

فایل site/views/helloworld/tmpl/default.xml را بصورت زیر اصلاح نمایید:

<?xml version=”1.0″ encoding=”utf-8″?>
<metadata>
<layout title=”COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE”>
<message>COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC</message>
</layout>
<fields
name=”request”
addfieldpath=”/administrator/components/com_helloworld/models/fields”
>
<fieldset name=”request”>
<field
name=”id”
type=”helloworld”
label=”COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL”
description=”COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC”
/>
</fieldset>
</fields>
</metadata>

کد بالا، یک نوع فیلد جدید معرفی می کند (“type=”helloworld) و به جوملا می گوید که داخل فولدر /administrator/components/com_helloworld/models/fields بدنبال تعریف این فیلد بگردد. در واقع جوملا داخل این فولدر بدنبال فایلی بنام helloworld.php می گردد.


فایل admin/models/fields/helloworld.php

با ویرایشگر دلخواهتان فایل admin/models/fields/helloworld.php را با محتوای زیر، ایجاد نمایید:

<?php
// No direct access to this file
defined(‘_JEXEC’) or die;

// import the list field type
jimport(‘joomla.form.helper’);
JFormHelper::loadFieldClass(‘list’);

/**
* HelloWorld Form Field class for the HelloWorld component
*/
class JFormFieldHelloWorld extends JFormFieldList
{
/**
* The field type.
*
* @var string
*/
protected $type = ‘HelloWorld’;
/**
* Method to get a list of options for a list input.
*
* @return array An array of JHtml options.
*/
protected function getOptions()
{
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select(‘id,greeting’);
$query->from(‘#__helloworld’);
$db->setQuery((string)$query);
$messages = $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;
}
}

با استفاده از این نوع فیلد جدید، یک drop-down جدید نمایش داده می شود و گزینه های آن، متن هایی است که از پایگاه داده حوانده شده است.


فایل site/models/helloworld.php

زمانی که یک منو از نوع کامپوننت hello world ایجاد و یا ویرایش می شود، جوملا، کدِ متنی که توسط کاربر انتخاب شده است را در لینک منو ذخیره می کند.

مدل HelloWorldModelHelloWorld براساس کد ذخیره شده و داده های ذخیره شده در پایگاه داده، متن مورد نظر را برمی گرداند.

فایل site/models/helloworld.php را بصورت زیر ویرایش نمایید:

<?php
// No direct access to this file
defined(‘_JEXEC’) or die(‘Restricted access’);
// import Joomla modelitem library
jimport(‘joomla.application.component.modelitem’);
/**
* HelloWorld Model
*/
class HelloWorldModelHelloWorld extends JModelItem
{
/**
* @var array messages
*/
protected $messages;
/**
* Returns a reference to the a Table object, always creating it.
*
* @param type The table type to instantiate
* @param string A prefix for the table class name. Optional.
* @param array Configuration array for model. Optional.
* @return JTable A database object
* @since 2.5
*/
public function getTable($type = ‘HelloWorld’, $prefix = ‘HelloWorldTable’, $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
/**
* Get the message
* @param int The corresponding id of the message to be retrieved
* @return string The message to be displayed to the user
*/
public function getMsg($id = 1)
{
if (!is_array($this->messages))
{
$this->messages = array();
}
if (!isset($this->messages[$id]))
{
//request the selected id
$jinput = JFactory::getApplication()->input;
$id = $jinput->get(‘id’, 1, ‘INT’ );
// Get a TableHelloWorld instance
$table = $this->getTable();
// Load the message
$table->load($id);
// Assign the message
$this->messages[$id] = $table->greeting;
}
return $this->messages[$id];
}
}

در کد بالا، model از کلاس HelloWorldTableHelloWorld، متن را درخواست می کند. این کلاس در فایل admin/tables/helloworld.php تعریف شده است.


 فایل admin/tables/helloworld.php

با ویرایشگر دلخواهتان فایل admin/tables/helloworld.php را با محتوای زیر، ایجاد نمایید:

<?php
// No direct access
defined(‘_JEXEC’) or die(‘Restricted access’);
// import Joomla table library
jimport(‘joomla.database.table’);
/**
* Hello Table class
*/
class HelloWorldTableHelloWorld extends JTable
{
/**
* Constructor
*
* @param object Database connector object
*/
function __construct(&$db)
{
parent::__construct(‘#__helloworld’, ‘id’, $db);
}
}

 فایل helloworld.xml

تغییرات زیر را در فایل xml، اعمال نمایید:

<?xml version=”1.0″ encoding=”utf-8″?>
<!– $Id: helloworld.xml 14 2009-11-02 18:35:20Z chdemko $ –>
<extension type=”component” version=”1.6.0″ method=”upgrade”>
<name>Hello World!</name>
<!– The following elements are optional and free of formatting conttraints –>
<creationDate>November 2009</creationDate>
<author>webtekar</author>
<authorEmail>info@webtekar.ir</authorEmail>
<authorUrl>http://www.webtekar.ir</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<!– The version string is recorded in the components table –>
<version>0.0.6</version>
<!– The description is optional and defaults to the name –>
<description>آموزش کامپوننت نویسی در جوملا- http://www.webtekar.ir</description>
<install> <!– Runs on install –>
<sql>
<file driver=”mysql” charset=”utf8″>sql/install.mysql.utf8.sql</file>
</sql>
</install>
<uninstall> <!– Runs on uninstall –>
<sql>
<file driver=”mysql” charset=”utf8″>sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<update> <!– Runs on update; New in 1.6 –>
<schemas>
<schemapath type=”mysql”>sql/updates/mysql</schemapath>
</schemas>
</update>
<!– Site 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 /site/ in the package –>
<files folder=”site”>
<filename>index.html</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<folder>views</folder>
<folder>models</folder>
</files>
<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”>
<!– Admin Main File Copy Section –>
<filename>index.html</filename>
<filename>helloworld.php</filename>
<!– SQL files section –>
<folder>sql</folder>
<!– tables files section –>
<folder>tables</folder>
<!– models files section –>
<folder>models</folder>
</files>
</administration>
</extension>

خب به پایان این اموزش رسیدیم برا موفق بودن در این کار باید شما به sql هم تسلط داشته باشید پس بخش اموزش sql را در کنار این اموزش مطالعه کنید
موفق پیروز باشید


اگه به اشتراک نزاشتی حداقل لایک کن:(

نظر شما در رابطه با این آموزش چیست


بالا

تمامی حقوق مادی و معنوی این وبسایت محفوظ میباشد و متعلق است به Webtekar.ir.
Google