J3.x

J3.x:تطوير مكون MVC/اضافة طلب متغير في نمط قائمة

From Joomla! Documentation

< J3.x:Developing an MVC Component
This page is a translated version of the page J3.x:Developing an MVC Component/Adding a variable request in the menu type and the translation is 85% complete.

Outdated translations are marked like this.
Other languages:
العربية • ‎English • ‎español • ‎français • ‎Nederlands
Joomla! 
3.x
درس
تطوير مكون MVC


هذه سلسلة من عدة مقالات من الدروس حول كيفية تطوير موديل-عرض-موجه مكون لنسخة Joomla! Joomla 3.x.

تبدأ مع مقدمة, وتستعرض المقالات في هذه السلسلة باستخدام زر التنقل في الأسفل أو الصندوق الأيمن ("المقالات في هذه السلسلة").



مقدمة

هذا الدرس هو جزء من درس تطوير مكون MVC لـ Joomla! 3.x . نشجعك على قراءة الجزء السابق من الدرس قبل قراءة هذا الدرس. You can watch a video associated with this step in the tutorial at Step 5, adding a variable request in the menu.

اضافة طلب متغير في نوع القائمة

الى الآن، الرسالة المعروضة هي دائما Hello World!. منذ Joomla! 2.5, من الممكن اضافة معامل الى نوع القائمة. وفي حالتنا، هذا ما فعلناه في ملف 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">
		<fieldset name="request">
			<field
					name="id"
					type="list"
					label="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL"
					description="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC"
					default="1">
                                <option value="1">Hello World!</option>
                                <option value="2">Good bye World!</option>
                        </field>
		</fieldset>
	</fields>
</metadata>

We're including a type list field within the menu. This is one of the Joomla Standard Form Field Types.

أمرين مهمين للملاحظة:

  • مجموعة "الطلب" لحقول تشير الى حقول أساسية.
  • خاصية الاسم يمكن تمريرها الى المكون في URL. في هذه الحالة ?option=com_helloworld&id=1 ستشير الى أنك اخترت الخيار 1.

الموديل بحاجة الى تعديل للانتقال بين الرسالتين المختلفتين (والتي تم الاختيار بواسطة المستخدم مع الحقل المحدد في الأعلى):

site/models/helloworld.php

<?php
/**
 * @package     Joomla.Administrator
 * @subpackage  com_helloworld
 *
 * @copyright   Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access to this file
defined('_JEXEC') or die('Restricted access');

/**
 * HelloWorld Model
 *
 * @since  0.0.1
 */
class HelloWorldModelHelloWorld extends JModelItem
{
	/**
	 * @var string message
	 */
	protected $message;

	/**
	 * Get the message
	 * @return  string  The message to be displayed to the user
	 */
	public function getMsg()
	{
		if (!isset($this->message))
		{
			$jinput = JFactory::getApplication()->input;
			$id     = $jinput->get('id', 1, 'INT');

			switch ($id)
			{
				case 2:
					$this->message = 'Good bye World!';
					break;
				default:
				case 1:
					$this->message = 'Hello World!';
					break;
			}
		}
		return $this->message;
	}
}

عدل أيضا ملف helloworld.xml الخاص بك ليشير الى النسخة الجديدة:

helloworld.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.0" method="upgrade">

	<name>Hello World!</name>
	<!-- The following elements are optional and free of formatting constraints -->
	<creationDate>January 2018</creationDate>
	<author>John Doe</author>
	<authorEmail>john.doe@example.org</authorEmail>
	<authorUrl>http://www.example.org</authorUrl>
	<copyright>Copyright Info</copyright>
	<license>License Info</license>
	<!--  The version string is recorded in the components table -->
	<version>0.0.5</version>
	<!-- The description is optional and defaults to the name -->
	<description>Description of the Hello World component ...</description>

	<update> <!-- Runs on update; New since J2.5 -->
		<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 link='index.php?option=com_helloworld'>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>

يمكنك اختبار طلب المتغير بواسطة وضع index.php?option=com_helloworld&view=helloworld&id=1 أو index.php?option=com_helloworld&view=helloworld&id=2 في عنوان متصفحك.

حزم المكون

محتوى فهرس الشفرة الخاصة بك:

انشئ ملف مضغوط عن هذا الفهرس أو حمل مباشرة من archive وثبته باستخدام مدير الملحقات في Joomla!. بامكانك اضافة عنصر قائمة لهذا المكون باستخدام مدير القائمة في الخلفية.

Info non-talk.png
General Information

الرجاء انشاء طلب سحب أو مشكلة على https://github.com/joomla/Joomla-3.2-Hello-World-Component لأي اختلافات في الكود أو أي تعديل في شفرة المصدر على هذه الصفحة.

المساهمين