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

از دانشنامه جوملا فارسی - مامبو فارسی
پرش به: ناوبری، جستجو
(صفحه‌ای جدید حاوی «در این مقاله آموزش کامپوننت نویسی [http://www.joomlafarsi.com جوملا] خواهید آموخت که چگ...» ایجاد کرد)
 
 
سطر ۱: سطر ۱:
در این مقاله آموزش [[کامپوننت]] نویسی [http://www.joomlafarsi.com جوملا] خواهید آموخت که چگونه یک model را به [[کامپوننت]] مورد استفاده در سایت تان اضافه کنید. در فریم ورک [[جوملا]] 2.5 model مسئولیت مدیریت داده ها را به عهده دارد. اولین تابعی که برای مدل باید نوشته شود تابع get() است کار تابع get() بازگرداندن داده ها به فراخوانی کننده آن تابع است. اگر آموزش های افزونه نویسی برای [[جوملا]] را دنبال کرده باشید حتما میدانید که ما برای view از نام HelloViewHello استفاده کردیم به صورت پیش فرض نام Model همانند View از این قانون پیروی میکند و ما نام model مان را HelloModelHello میگذاریم.
+
=مقدمه=
<br/>
+
 
در پوشه site\models\hello.php فایل '''hello.php''' باید شامل کدهای زیر باشد.
+
در این مقاله آموزش [[کامپوننت]] نویسی [http://www.joomlafarsi.com جوملا] خواهید آموخت که چگونه یک model را به [[کامپوننت]] مورد استفاده در سایت تان اضافه کنید. در فریم ورک [[جوملا]] 2.5 model مسئولیت مدیریت داده‌ها را به عهده دارد. اولین تابعی که برای مدل باید نوشته شود تابع ()get است کار تابع ()get بازگرداندن داده‌ها به فراخوانی کننده آن تابع است. اگر آموزش‌های افزونه نویسی برای [[جوملا]] را دنبال کرده باشید حتما می‌دانید که ما برای view از نام HelloViewHello استفاده کردیم، به صورت پیش فرض نام Model همانند View از این قانون پیروی می‌کند و ما نام model مان را HelloModelHello می‌گذاریم.
 +
 
 +
در پوشه site\models\hello.php فایل '''hello.php''' باید شامل کدهای زیر باشد:
 +
 
 +
 
 
<source lang="php" >
 
<source lang="php" >
 
<?php
 
<?php
سطر ۲۲: سطر ۲۶:
 
?>
 
?>
 
</source>
 
</source>
سپس HelloViewHello برای استفاده از داده های متد get کلاس JView  مدل را صدا میزند.
+
 
<br/>
+
 
 +
سپس HelloViewHello برای استفاده از داده‌های متد get کلاس JView  مدل را صدا میزند.
 +
 
 
در این مرحله باید کلاس HelloViewHello را در فایل site\views\hello\'''view.html.php''' به صورت زیر ویرایش کنیم.
 
در این مرحله باید کلاس HelloViewHello را در فایل site\views\hello\'''view.html.php''' به صورت زیر ویرایش کنیم.
 +
 +
 
<source lang="php" >
 
<source lang="php" >
 
<?php
 
<?php
سطر ۵۰: سطر ۵۸:
 
?>
 
?>
 
</source>
 
</source>
حال باید فایل '''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>
برای ایجاد بسته نصبی از افزونه‌های [[جوملا]] از فرمت '''ZIP''' استفاده می‌کنیم. جهت ایجاد بسته نصبی از [[کامپوننت]] مان باید فایل‌ها زیر را در یک فولدر خارج از [[جوملا]] آماده کنیم.  
+
 
 +
 
 +
برای ایجاد بسته نصبی از افزونه‌های [[جوملا]] از فرمت '''ZIP''' استفاده می‌کنیم. جهت ایجاد بسته نصبی از [[کامپوننت]] مان باید فایل‌ها زیر را در یک فولدر خارج از [[جوملا]] آماده کنیم.
 +
 
 +
 
 
<div dir="ltr">
 
<div dir="ltr">
helloworld.xml (فایل نصب کننده کامپوننت)  <br/>
+
helloworld.xml (فایل نصب کننده کامپوننت)   
site\hello.php <br/>
+
site\hello.php  
site\index.html <br/>
+
site\index.html  
site\controller.php <br/>
+
site\controller.php  
site\views\hello\view.html.php <br/>
+
site\views\hello\view.html.php  
site\views\hello\tmpl\default.php <br/>
+
site\views\hello\tmpl\default.php  
site\views\hello\tmpl\default.xml <br/>
+
site\views\hello\tmpl\default.xml  
site\models\hello.php <br/>
+
site\models\hello.php  
admin\hello.php <br/>
+
admin\hello.php  
admin\index.html <br/>
+
admin\index.html  
 
</div>
 
</div>
 +
 +
 
فایل '''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>
فایل site\'''hello.php''' باید شامل کدهای زیر باشد
+
 
 +
 
 +
فایل site\'''hello.php''' باید شامل کدهای زیر باشد:
 +
 
 +
 
 
<source lang="php" >
 
<source lang="php" >
 
<?php
 
<?php
سطر ۱۳۸: سطر ۱۶۲:
 
?>
 
?>
 
</source>
 
</source>
فایل '''admin\hello.php''' باید شامل کدهای زیر باشد
+
 
 +
 
 +
فایل '''admin\hello.php''' باید شامل کدهای زیر باشد:
 +
 
 +
 
 
<div dir="ltr">
 
<div dir="ltr">
 
Hello World Administrator
 
Hello World Administrator
 
</div>
 
</div>
 +
 +
 
سپس به یک فایل '''index.html''' نیاز داریم که در تمامی فولدرهای کامپوننت قرار گیرد.  
 
سپس به یک فایل '''index.html''' نیاز داریم که در تمامی فولدرهای کامپوننت قرار گیرد.  
 +
 +
 
<source lang="php" >
 
<source lang="php" >
 
<html><body bgcolor="#FFFFFF"></body></html>
 
<html><body bgcolor="#FFFFFF"></body></html>
سطر ۱۵۸: سطر ۱۹۰:
 
?>
 
?>
 
</source>
 
</source>
فایل site\views\hello\'''view.html.php''' باید شامل کدهای زیر باشد
+
 
 +
 
 +
فایل site\views\hello\'''view.html.php''' باید شامل کدهای زیر باشد:
 +
 
 +
 
 
<source lang="php" >
 
<source lang="php" >
 
<?php
 
<?php
سطر ۱۸۴: سطر ۲۲۰:
 
?>
 
?>
 
</source>
 
</source>
فایل site\views\hello\tmpl\'''default.php''' باید شامل کدهای زیر باشد
+
 
 +
 
 +
فایل site\views\hello\tmpl\'''default.php''' باید شامل کدهای زیر باشد:
 +
 
 +
 
 
<source lang="php" >
 
<source lang="php" >
 
<?php
 
<?php
سطر ۱۹۶: سطر ۲۳۶:
 
</h1>
 
</h1>
 
</source>
 
</source>
و همچنین اگر تمایل دارید یک نوع منو در مدیریت منو از نوع [[کامپوننت]] شما ایجاد شود باید فایل site\views\hello\tmpl\'''default.xml''' شامل کدهای زیر باشد
+
 
 +
 
 +
و همچنین اگر تمایل دارید یک نوع منو در مدیریت منو از نوع [[کامپوننت]] شما ایجاد شود باید فایل site\views\hello\tmpl\'''default.xml''' شامل کدهای زیر باشد:
 +
 
 +
 
 
<source lang="xml" >
 
<source lang="xml" >
 
<?xml version="1.0" encoding="utf-8"?>
 
<?xml version="1.0" encoding="utf-8"?>
سطر ۲۰۵: سطر ۲۴۹:
 
</metadata>
 
</metadata>
 
</source>
 
</source>
و در نهایت فایل site\models\'''hello.php''' باید شامل کدهای زیر باشد
+
 
 +
 
 +
و در نهایت فایل site\models\'''hello.php''' باید شامل کدهای زیر باشد:
 +
 
 +
 
 
<source lang="php" >
 
<source lang="php" >
 
<?php
 
<?php
سطر ۲۲۷: سطر ۲۷۵:
 
</source>
 
</source>
  
ایجاد فایل '''helloworld.zip''' با فایل‌ها و فولدرهایی که در قسمت‌های قبل ایجاد کردیم.  <br/>
+
 
نصب فایل zip شده توسط قسمت مدیریت افزونه‌های [[جوملا]] 2.5    <br/>
+
ایجاد فایل '''helloworld.zip''' با فایل‌ها و فولدرهایی که در قسمت‌های قبل ایجاد کردیم.   
 +
 
 +
نصب فایل zip شده توسط قسمت مدیریت افزونه‌های [[جوملا]] 2.5     
 +
 
 
'''نکته''' : توجه داشته باشید اگر در مراحل قبل [[کامپوننت]] را در میان سورس [[جوملا]] ساخته و اجرا کرده‌اید قبل نصب فایل zip [[کامپوننت]] باید فایل‌های مربوط به افزونه این آموزش را از [[جوملا]] پاک کنید و بعد اقدام به نصب فایل zip پکیج شده بکنید.
 
'''نکته''' : توجه داشته باشید اگر در مراحل قبل [[کامپوننت]] را در میان سورس [[جوملا]] ساخته و اجرا کرده‌اید قبل نصب فایل zip [[کامپوننت]] باید فایل‌های مربوط به افزونه این آموزش را از [[جوملا]] پاک کنید و بعد اقدام به نصب فایل zip پکیج شده بکنید.
 +
 
شما می‌توانید کارکرد این افزونه را با وارد کردن <nowiki>http://localhost/sitename/index.php?option=com_hello</nowiki> در مرورگر چک کنید. اگر عبارت بالا را در آدرس بار مرورگر وارد کنیم باید نتیجه‌ای همانند شکل زیر دریافت کنیم.
 
شما می‌توانید کارکرد این افزونه را با وارد کردن <nowiki>http://localhost/sitename/index.php?option=com_hello</nowiki> در مرورگر چک کنید. اگر عبارت بالا را در آدرس بار مرورگر وارد کنیم باید نتیجه‌ای همانند شکل زیر دریافت کنیم.
 +
 +
 
[[پرونده: Adding model.jpg|center|frame ]]
 
[[پرونده: Adding model.jpg|center|frame ]]
 +
  
 
----
 
----

نسخهٔ کنونی تا ‏۱۸ مارس ۲۰۱۳، ساعت ۰۹:۰۲

مقدمه

در این مقاله آموزش کامپوننت نویسی جوملا خواهید آموخت که چگونه یک model را به کامپوننت مورد استفاده در سایت تان اضافه کنید. در فریم ورک جوملا 2.5 model مسئولیت مدیریت داده‌ها را به عهده دارد. اولین تابعی که برای مدل باید نوشته شود تابع ()get است کار تابع ()get بازگرداندن داده‌ها به فراخوانی کننده آن تابع است. اگر آموزش‌های افزونه نویسی برای جوملا را دنبال کرده باشید حتما می‌دانید که ما برای view از نام HelloViewHello استفاده کردیم، به صورت پیش فرض نام Model همانند View از این قانون پیروی می‌کند و ما نام model مان را 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 getMsg() { if(!isset($this->msg)) { $this->msg = 'Hello World Model'; } return $this->msg; } } ?> </source>


سپس HelloViewHello برای استفاده از داده‌های متد get کلاس JView مدل را صدا میزند.

در این مرحله باید کلاس HelloViewHello را در فایل site\views\hello\view.html.php به صورت زیر ویرایش کنیم.


<source lang="php" > <?php //No direct access to this file should be called by Joomla defined('_JEXEC') or die('Restricted Access'); //import joomla controller library jimport('joomla.application.component.view'); class HelloViewHello extends JView { //Overrite 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'))) { JError::raiseError(500,implode('
',$errors)); return false; } //Display the View parent::display($tpl); } } ?> </source>


حال باید فایل helloworld.xml را به گونه ویرایش کنید که شامل قسمت‌های اضافه شده برای بخش مدل نیز باشد.


<source lang="xml" > <?xml version="1.0" encoding="utf-8" ?> <install type="component" version="2.5"> <name>hello</name>

 <creationDate>2013-03-12</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.02</version> 

<description>اضافه کردن مدل به کامپوننت</description> <files folder="site"> <filename>index.html</filename> <filename>hello.php</filename> <filename>controller.php</filename> <folder>views</folder> <folder>models</folder> </files> <administration> <files folder="admin"> <filename>index.html</filename> <filename>hello.php</filename> </files> </administration> </install> </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


فایل helloworld.xml همانطور که قبلا به آن اشاره کردیم باید شامل کدهای زیر باشد:


<source lang="xml" > <?xml version="1.0" encoding="utf-8"?> <install type="component" version="2.5"> <name>hello</name>

<creationDate>2013-03-12</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.02</version

<description>اضافه کردن مدل به کامپوننت</description> <files folder="site"> <filename>index.html</filename> <filename>hello.php</filename> <filename>controller.php</filename> <folder>views</folder> <folder>models</folder> </files> <administration> <files folder="admin"> <filename>index.html</filename> <filename>hello.php</filename> </files> </administration> </install> </source>


فایل site\hello.php باید شامل کدهای زیر باشد:


<source lang="php" > <?php //No direct access to the file defined('_JEXEC') or die('Restricted Access not allowed'); //import joomla controller library jimport('joomla.application.component.controller'); //get an instance of the controller prefixed by HelloWorld $controller = JController::getInstance('Hello'); //perform the request task $controller->execute(JRequest::getCmd('task')); //Redirect if set by controller $controller->redirect(); ?> </source>


فایل admin\hello.php باید شامل کدهای زیر باشد:


Hello World Administrator


سپس به یک فایل index.html نیاز داریم که در تمامی فولدرهای کامپوننت قرار گیرد.


<source lang="php" > <html><body bgcolor="#FFFFFF"></body></html> </source> فایل site\controller.php باید شامل کدهای زیر باشد <source lang="php" > <?php //No direct access to this file should be called by Joomla defined('_JEXEC') or die('Restricted Access'); //import joomla controller library jimport('joomla.application.component.controller'); class HelloController extends JController { } ?> </source>


فایل site\views\hello\view.html.php باید شامل کدهای زیر باشد:


<source lang="php" > <?php //No direct access to this file should be called by Joomla defined('_JEXEC') or die('Restricted Access'); //import joomla controller library jimport('joomla.application.component.view'); class HelloViewHello extends JView { //Overrite 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'))) { JError::raiseError(500,implode('
',$errors)); return false; } //Display the View parent::display($tpl); } } ?> </source>


فایل site\views\hello\tmpl\default.php باید شامل کدهای زیر باشد:


<source lang="php" > <?php //No direct access to this file should be called by Joomla defined('_JEXEC') or die('Restricted Access'); ?>

<?php echo $this->msg; ?>

</source>


و همچنین اگر تمایل دارید یک نوع منو در مدیریت منو از نوع کامپوننت شما ایجاد شود باید فایل site\views\hello\tmpl\default.xml شامل کدهای زیر باشد:


<source lang="xml" > <?xml version="1.0" encoding="utf-8"?> <metadata> <layout title="New Hello Menu Item"> <message>New Hello Menu Item Desc</message> </layout> </metadata> </source>


و در نهایت فایل site\models\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 getMsg() { if(!isset($this->msg)) { $this->msg = 'Hello World Model'; } return $this->msg; } } ?> </source>


ایجاد فایل helloworld.zip با فایل‌ها و فولدرهایی که در قسمت‌های قبل ایجاد کردیم.

نصب فایل zip شده توسط قسمت مدیریت افزونه‌های جوملا 2.5

نکته : توجه داشته باشید اگر در مراحل قبل کامپوننت را در میان سورس جوملا ساخته و اجرا کرده‌اید قبل نصب فایل zip کامپوننت باید فایل‌های مربوط به افزونه این آموزش را از جوملا پاک کنید و بعد اقدام به نصب فایل zip پکیج شده بکنید.

شما می‌توانید کارکرد این افزونه را با وارد کردن http://localhost/sitename/index.php?option=com_hello در مرورگر چک کنید. اگر عبارت بالا را در آدرس بار مرورگر وارد کنیم باید نتیجه‌ای همانند شکل زیر دریافت کنیم.


Adding model.jpg



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

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