اضافه کردن مدل

اضافه کردن مدل

با عرض سلام به دوستان و همراهان جوملایی وبتکار

امرروز هم با ادامه اموزش جوملا در خدمتتونم در این پست قصد دارم نحوه ی اضافه کردن مدل ، به رابط کاربری را توضیح دهم.

در اموزشا قبلی طریقه اضافه کردن view را دیدید. امروز می خواهیم رشته “!Hello World” را از طریق model به view ارسال کنیم.
پس با ما همراه باشید

فایل نصب کامپوننت

در فایل نصب کامپوننت، قسمت های قرمز رنگ مطابق شکل زیر، اضافه یا تغییر خواهند کرد:

%d8%a7%d8%b6%d8%a7%d9%81%d9%87-%da%a9%d8%b1%d8%af%d9%86-%d9%85%d8%af%d9%84-1


فایل site/views/helloworld/view.html.php

کلاس HelloWorldViewHelloWorld با استفاده از متد ()get، که یکی از متدهای کلاس JView است، داده ها را از model متناظر خودش، درخواست می کند.

با ویرایشگر دلخواهتان فایل site/views/helloworld/view.html.php را که قبلاً ایجاد کرده بودیم، بصورت زیر تغییر دهید:

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

// import Joomla view library
jimport(‘joomla.application.component.view’);

/**
* HTML View class for the HelloWorld Component
*/
class HelloWorldViewHelloWorld extends JView
{
// Overwriting JView display method
function display($tpl = null)
{
// Assign data to the view
$this->msg = $this->get(‘Msg’);

// Check for errors.
if (count($errors = $this->get(‘Errors’)))
{
JLog::add(implode(‘<br />’, $errors), JLog::WARNING, ‘jerror’);
return false;
}
// Display the view
parent::display($tpl);


توجه: همان طور که گفته شد، متد ()get یکی از اعضاء کلاس JView است، وظیفه این متد این است که پارامتر ورودی را گرفته و آنرا به عبارت get می چسباند و با توجه به عبارت جدید به دست آمده، در model متناظر view، بدنبال متد همنام، یعنی ()getMsg می گردد.


فایل site/models/helloworld.php

بصورت پیشفرض در فایل site/models/helloworld.php باید کلاس “HelloWorldModelHelloWorld” تعریف شود.

اولین تابعی که باید داخل این کلاس نوشته شود، تابع ()getMsg است. این تابع، داده ها را به صدا زننده خود (caller) برمی گرداند. در اینجا caller، همان View متناظر model یعنی “HelloWorldViewHelloWorld” است.

اجازه دهید از طریق یک مثال، نگاهی گذرا به قراردادهای نام گذاری، بیاندازیم:

کلاس “HelloWorldViewHelloWorld” که در فایل site/views/helloworld/view.html.php تعریف شده است، از کلاس “HelloWorldModelHelloWorld” در فایل site/models/helloworld.php استفاده می کند.
خوب، حالا فرض کنید بخواهیم از یک view بنام fluffy استفاده نماییم، بنابراین باید:

کلاس HelloWorldViewFluffy را در فایل site/views/fluffy/view.html.php تعریف نمایید.
view بالا، بصورت پیشفرض از کلاس HelloWorldModelFluffy در فایل site/models/fluffy.php استفاده خواهد کرد.
برای اینکه این مثال، بطور صحیح کار کند باید فایل site/views/fluffy/tmpl/default.php را نیز اضافه نمایید.
توجه: رعایت نکردن هرکدام از این قوانین، باعث ایجاد error خواهد شد.

با ویرایشگر دلخواهتان فایل 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 string msg
*/
protected $msg;

/**
* Get the message
* @return string The message to be displayed to the user
*/
public function getMsg()
{
if (!isset($this->msg))
{
$this->msg = ‘Hello World!’;
}
return $this->msg;
}
}


فایل helloworld.xml

تغییرات زیر را در فایل xml مربوط به نصب اعمال نمایید:

نسخه کامپوننت را یک واحد اضافه نمایید. (۰٫۰٫۴)
سمت سایت فولدر model را مشخص نمایید. (models)


<?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.4</version>
<!– The description is optional and defaults to the name –>
<description>آموزش کامپوننت نویسی در جوملا- http://www.webtekar.ir</description>
<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>
</files>
</administration>
</extension>

خب دوستان اینم از این تمام شد.

امید وارم مفید بوده باشه براتون.

موفق و پروز باشید.

 



اگه خوشت اومد به اشتراک بزار


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

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


بالا

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