ทดลองเขียน Component

แชร์ ความรู้ในการ พัฒนา Joomla Component Extension Module Plugin

Moderator: mindphp, ผู้ดูแลกระดาน

adinan49
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 547
ลงทะเบียนเมื่อ: 01/11/2021 9:57 am

ทดลองเขียน Component

โพสต์ที่ยังไม่ได้อ่าน โดย adinan49 »

สร้างส่วนโฟเดอร์
  • controllers
  • helpers
  • models
  • language
สร้างไฟล์
  • controller.php
  • global.php
  • test.php
  • test.xml
ไฟล์ test.xml ที่เขียนโค้ดเขียน

โค้ด: เลือกทั้งหมด

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.1" method="upgrade">
	<name>com_test</name>
	<author>Joomla! Project</author>
	<creationDate>April 2006</creationDate>
	<copyright>(C) 2005 - 2020 Open Source Matters. All rights reserved.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>[email protected]</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>1.0.0</version>
	<description>COM_TEST_XML_DESCRIPTION</description>


	<administration>
	<menu>com_test</menu>
		<files folder="admin">
			<filename>controller.php</filename>
			<filename>test.php</filename>
			<filename>global.php</filename>
			<folder>controllers</folder>
			<folder>language</folder>
			<folder>helpers</folder>
			<folder>models</folder>
			<folder>views</folder>
		</files>
		<languages folder="admin">
			<language tag="en-GB">language/en-GB.com_users.ini</language>
			<language tag="en-GB">language/en-GB.com_users.sys.ini</language>
		</languages>
	</administration>
</extension>
แก้ไขล่าสุดโดย adinan49 เมื่อ 27/01/2022 9:05 am, แก้ไขไปแล้ว 1 ครั้ง.
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: ทดลองเขียน Component

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ผลเป็นยังไงครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
adinan49
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 547
ลงทะเบียนเมื่อ: 01/11/2021 9:57 am

Re: ทดลองเขียน Component

โพสต์ที่ยังไม่ได้อ่าน โดย adinan49 »

ผลของคอมโพเน้นท์
หมายเหตุ คอมโพเน้นท์ยังไม่เสร็จสมบูรณ์ครับ
หน้าแสดงผล joomla.png
หน้าแสดงผล joomla.png (65.2 KiB) Viewed 982 times
com_test.zip
(107.32 KiB) ดาวน์โหลดแล้ว 113 ครั้ง
adinan49
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 547
ลงทะเบียนเมื่อ: 01/11/2021 9:57 am

Re: ทดลองเขียน Component

โพสต์ที่ยังไม่ได้อ่าน โดย adinan49 »

อัพเดทการเขียน Component
สร้างตัวแปรภาษา
  • อังกฤษ

โค้ด: เลือกทั้งหมด

COM_TEST="Component Test"
COM_TEST_XML_DESCRIPTION="This component for test"
COM_TEST_CONTROL_PARNEL="Control Parnel"
COM_TEST_TEST="Test"
COM_TEST_HOME="Home"
COM_TEST_ABOUT="About"
  • ไทย

โค้ด: เลือกทั้งหมด

COM_TEST="Component Test"
COM_TEST_XML_DESCRIPTION="คอมโพเน้นท์สำหรับการทดสอบ"
COM_TEST_CONTROL_PARNEL="Control Parnel"
COM_TEST_TEST="ทดสอบ"
COM_TEST_HOME="หน้าแรก"
COM_TEST_ABOUT="เกี่ยวกับเรา"
สร้างส่วน view
  • หน้าคอมโพเน้นท์หลัก test
Screenshot 2022-01-27 183425.png
Screenshot 2022-01-27 183425.png (27.44 KiB) Viewed 977 times
  • หน้า Home
Screenshot 2022-01-27 183439.png
Screenshot 2022-01-27 183439.png (27.39 KiB) Viewed 977 times
  • หน้า about
Screenshot 2022-01-27 183458.png
Screenshot 2022-01-27 183458.png (27.83 KiB) Viewed 977 times
ส่วนโมเดล
สร้างส่วนรับค่า บันทึกข้อมูล และสร้างค้นหาข้อมูล

โค้ด: เลือกทั้งหมด

<?php

/**
 * @package     com_test
 * @author  	mindphp developper
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

class TestModelTests extends JModelList
{
    public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'id', 'a.id',
				'name', 'a.name',
				'email', 'a.email',
				'address', 'a.address',
				'sendEmail', 'a.sendEmail',
				'registerDate', 'a.registerDate',
				'lastvisitDate', 'a.lastvisitDate',
				'activation', 'a.activation',
				'active',
				'group_id',
				'range',
				'lastvisitrange',
				'state',
			);
		}

		parent::__construct($config);
	}
    protected function populateState($ordering = 'a.name', $direction = 'asc')
    {
        $this->setState('filter.search', $this->getUserStateFromRequest($this->context . '.filter.search', 'filter_search', '', 'string'));
        parent::populateState($ordering,$direction);
    }

    protected function getListQuery()
    {
        $db=$this->getDbo();
        $query=$db->getListQuery(true);

        $query->select('*')->from('#__tests AS a');

        if (!empty($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where('a.id = ' . (int) substr($search, 3));
			}
			
			else
			{
				// Escape the search token.
				$search = $db->quote('%' . str_replace(' ', '%', $db->escape(trim($search), true) . '%'));

				// Compile the different search clauses.
				$searches   = array();
				$searches[] = 'a.name LIKE ' . $search;
				$searches[] = 'a.email LIKE ' . $search;
                $searches[] = 'a.address LIKE ' . $search;

				// Add the clauses to the query.
				$query->where('(' . implode(' OR ', $searches) . ')');
			}
		}
    }
}
ตารางข้อมูล

โค้ด: เลือกทั้งหมด

-- phpMyAdmin SQL Dump
-- version 5.1.1
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Generation Time: Jan 27, 2022 at 11:42 AM
-- Server version: 5.7.33
-- PHP Version: 7.4.19

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `tool-mt49`
--

-- --------------------------------------------------------

--
-- Table structure for table `g5yd7_tests`
--

CREATE TABLE `g5yd7_tests` (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `created_by` int(11) NOT NULL,
  `created_time` datetime NOT NULL,
  `modefied_by` int(11) NOT NULL,
  `modefied_time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Indexes for dumped tables
--

--
-- Indexes for table `g5yd7_tests`
--
ALTER TABLE `g5yd7_tests`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `g5yd7_tests`
--
ALTER TABLE `g5yd7_tests`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
com_test.zip
(19.06 KiB) ดาวน์โหลดแล้ว 115 ครั้ง
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21991
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: ทดลองเขียน Component

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

ไฟล์ zip ของ component เอาไปติดตั้งใช้งานไม่ได้
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
ตอบกลับโพส

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 67