What is Drupal | Drupal History |

Explain what is Drupal?

Drupal is free, open-source content management framework written in PHP. Drupal is distributed under GNU General Public License.

Drupal is a framework which organize, manage and publish content easily and provides a lot of features of customization.

As of December 2019, the Drupal community comprised more than 1.39 million    members,  including 117,000 users actively contributing, resulting in more than 44,000 free modules that extend and customize Drupal functionality, over 2,800 free themes that change the look and feel of Drupal, and at least 1,300 free distributions that allow users to quickly and easily set up a complex, use-specific Drupal in fewer steps.

The standard release of Drupal, known as Drupal core, contains basic features common to content-management systems. These include user account registration and maintenance, menu management, RSS feeds, taxonomy, page layout customization, and system administration. The Drupal core installation can serve as a simple website, a single- or multi-user blog, an Internet forum, or a community website providing for user-generated content.

Drupal originally written by Dries Buytaert as a message board, Drupal became an open source project in 2001. he name Drupal represents an English rendering of the Dutch word druppel, which means "drop" (as in a water droplet).  The name came from the now-defunct Drop.org website, whose code slowly evolved into Drupal. Buytaert wanted to call the site "dorp" (Dutch for "village") for its community aspects, but mistyped it when checking the domain name and thought the error sounded better.

As of 2014 Drupal is developed by a community. From July 2007 to June 2008 the Drupal.org site provided more than 1.4 million downloads of Drupal software, an increase of approximately 125% from the previous year.

As of January 2017 more than 1,180,000 sites use Drupal. These include hundreds of well-known organizations, including corporations, media and publishing companies, governments, non-profits, schools, and individuals. Drupal has won several Packt Open Source CMS Awards and won the Webware 100[clarification needed] three times in a row.

Drupal 6 was released on February 13, 2008, on March 5, 2009 Buytaert announced a code freeze for Drupal 7 for September 1, 2009. Drupal 7 was released on January 5, 2011, with release parties in several countries. After that, maintenance on Drupal 5 stopped, with only Drupal 7 and Drupal 6 maintained. Drupal 7 series maintenance updates are released regularly. Previously, Drupal 7's end-of-life was scheduled for November 2021, but given the impact of COVID-19, the end of life has been pushed back until November 28, 2022. Drupal 8 will still be end-of-life on November 2, 2021.

On October 7, 2015 Drupal 8 first release candidate (rc1) was announced. Drupal 8 includes new features and improvements for both users and developers, including: a revamped user interface; WYSIWYG and in-place editing; improved mobile support; added and improved key contributed modules including Views, Date, and Entity Reference; introduced a new object-oriented backend leveraging Symfony components; revamped configuration management; and improved multilingual support. Drupal 8 rc1 is the collective work of over 3,200 core contributors.

Drupal 8.0.0 was released on November 19, 2015. Subsequent major and minor releases which bring numerous improvements and bug fixes (including CKEditor WYSIWYG enhancements, added APIs, an improved help page) can be found on the Releases page.

Drupal 9 initial release 9.0.0 was on June 3, 2020.

Drupal 10's initial release schedule is on July 2022.

Core

In the Drupal community, "core" refers to the collaboratively built codebase that can be extended through contributory modules and – for versions prior to Drupal 8 – is kept outside of the "sites" folder of a Drupal installation. (Starting with version 8, core is kept in its own 'core' sub-directory.) Drupal core is the stock element of Drupal. Common Drupal-specific libraries, as well as the bootstrap process, are defined as Drupal core; all other functionality is defined as Drupal modules including the system module itself.

In a Drupal website's default configuration, authors can contribute content as either registered or anonymous users (at the discretion of the administrator). This content is accessible to web visitors through a variety of selectable criteria. As of Drupal 8, Drupal has adopted some Symfony libraries into Drupal core.

Core modules also includes a hierarchical taxonomy system, which lets developers categorize content or tagged with key words for easier access.

Drupal maintains a detailed changelog of core feature updates by version.





National Symbols | राष्ट्रीय चिह्न

 राष्ट्रीय चिह्न एक प्रतीक है जिसे किसी राष्ट्र या बहु-राष्ट्रीय राज्य द्वारा अपने प्रतीक के रूप में उपयोग के लिए आरक्षित किया जाता है। इस चिह्न का प्रयोग सरकारी कागजों- दस्तावेजों, अभिलेखों, प्रपत्रों, मुद्रा आदि पर किया जाता है।

इस खण्ड में आपको भारत की राष्ट्रीय पहचान के प्रतीकों का परिचय दिया गया है। यह प्रतीक भारतीय पहचान और विरासत का मूलभूत हिस्सा हैं। विश्व भर में बसे विविध पृष्ठभूमियों के भारतीय इन राष्ट्रीय प्रतीकों पर गर्व करते हैं क्योंकि वे प्रत्येक भारतीय के हृदय में गौरव और देश भक्ति की भावना का संचार करते हैं।

राष्ट्रीय ध्वज






राष्ट्रीय ध्वज तिरंगे में समान अनुपात में तीन क्षैतिज पट्टियां हैं: केसरिया रंग सबसे ऊपर, सफेद बीच में और हरा रंग सबसे नीचे है। ध्वज की लंबाई-चौड़ाई का अनुपात 3:2 है। सफेद पट्टी के बीच में नीले रंग का चक्र है।

शीर्ष में केसरिया रंग देश की ताकत और साहस को दर्शाता है। बीच में स्थित सफेद पट्टी धर्म चक्र के साथ शांति और सत्य का संकेत है। हरा रंग देश के शुभ, विकास और उर्वरता को दर्शाता है।

इसका प्रारूप सारनाथ में अशोक के सिंह स्तंभ पर बने चक्र से लिया गया है। इसका व्यास सफेद पट्टी की चौड़ाई के लगभग बराबर है और इसमें 24 तीलियां हैं। भारत की संविधान सभा ने राष्ट्रीय ध्वज का प्रारूप 22 जुलाई 1947 को अपनाया।

राष्ट्र–गान

भारत का राष्ट्रगान 'जन गण मन' है, जो मूलतः बांग्ला भाषा में गुरुदेव रवीन्द्रनाथ ठाकुर द्वारा लिखा गया था, जिसे भारत सरकार द्वारा 24 जनवरी 1950 को राष्ट्रगान के रूप में अंगीकृत किया गया। इसके गायन की अवधि लगभग 52 सेकेण्ड निर्धारित है। गुरुदेव रवीन्द्रनाथ ठाकुर विश्व के एकमात्र व्यक्ति हैं, जिनकी रचना को एक से अधिक देशों में राष्ट्रगान का दर्जा प्राप्त है। उनकी एक दूसरी कविता 'आमार सोनार बाँग्ला' को आज भी बांग्लादेश में राष्ट्रगान का दर्जा प्राप्त है।


जन-गण-मन अधिनायक जय हे

भारत भाग्‍य विधाता ।

पंजाब-सिंधु-गुजरात-मराठा

द्राविड़-उत्‍कल-बंग

विंध्य हिमाचल यमुना गंगा

उच्‍छल जलधि तरंग

तव शुभ नामे जागे, तव शुभ आशिष मांगे

गाहे तव जय-गाथा ।

जन-गण-मंगलदायक जय हे भारत भाग्‍य विधाता ।

जय हे, जय हे, जय हे, जय जय जय जय हे ।

राष्ट्रीय गीत

वन्‍दे मातरम गीत बंकिम चन्‍द्र चटर्जी द्वारा संस्‍कृत में रचा गया है; यह स्‍वतंत्रता की लड़ाई में लोगों के लिए प्ररेणा का स्रोत था। इसका स्‍थान जन गण मन के बराबर है। इसे पहली बार 1896 में भारतीय राष्‍ट्रीय कांग्रेस के सत्र में गाया गया था। 


वंदे मातरम्, वंदे मातरम्!

सुजलाम्, सुफलाम्, मलयज शीतलाम्,

शस्यश्यामलाम्, मातरम्!

वंदे मातरम्!

शुभ्रज्योत्सनाम् पुलकितयामिनीम्,

फुल्लकुसुमित द्रुमदल शोभिनीम्,

सुहासिनीम् सुमधुर भाषिणीम्,

सुखदाम् वरदाम्, मातरम्!

वंदे मातरम्, वंदे मातरम्॥

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

राजकीय प्रतीक







भारत का राजचिह्न सारनाथ स्थित अशोक के सिंह स्तंभ की अनुकृति है, जो सारनाथ के संग्रहालय में सुरक्षित है। मूल स्तंभ में शीर्ष पर चार सिंह हैं, जो एक-दूसरे की ओर पीठ किए हुए हैं। इसके नीचे घंटे के आकार के पदम के ऊपर एक चित्र वल्लरी में एक हाथी, चौकड़ी भरता हुआ एक घोड़ा, एक सांड तथा एक सिंह की उभरी हुई मूर्तियां हैं, इसके बीच-बीच में चक्र बने हुए हैं। एक ही पत्थर को काट कर बनाए गए इस सिंह स्तंभ के ऊपर 'धर्मचक्र' रखा हुआ है।
भारत सरकार ने यह चिन्ह 26 जनवरी, 1950 को अपनाया। इसमें केवल तीन सिंह दिखाई पड़ते हैं, चौथा दिखाई नही देता। पट्टी के मध्य में उभरी हुई नक्काशी में चक्र है, जिसके दाईं ओर एक सांड और बाईं ओर एक घोड़ा है। दाएं तथा बाएं छोरों पर अन्य चक्रों के किनारे हैं। आधार का पदम छोड़ दिया गया है। फलक के नीचे मुण्डकोपनिषद का सूत्र 'सत्यमेव जयते' देवनागरी लिपि में अंकित है, जिसका अर्थ है- 'सत्य की ही विजय हो


राष्ट्रीय पक्षी





भारतीय मोर, पावों क्रिस्‍तातुस, भारत का राष्‍ट्रीय पक्षी एक रंगीन, हंस के आकार का पक्षी पंखे आकृति की पंखों की कलगी, आँख के नीचे सफेद धब्‍बा और लंबी पतली गर्दन। इस प्रजाति का नर मादा से अधिक रंगीन होता है जिसका चमकीला नीला सीना और गर्दन होती है और अति मनमोहक कांस्‍य हरा 200 लम्‍बे पंखों का गुच्‍छा होता है। मादा भूरे रंग की होती है, नर से थोड़ा छोटा और इसमें पंखों का गुच्‍छा नहीं होता है। नर का दरबारी नाच पंखों को घुमाना और पंखों को संवारना सुंदर दृश्‍य होता है।

राष्‍ट्रीय पशु





राजसी बाघ, तेंदुआ टाइग्रिस धारीदार जानवर है। इसकी मोटी पीली लोमचर्म का कोट होता है जिस पर गहरी धारीदार पट्टियां होती हैं। लावण्‍यता, ताकत, फुर्तीलापन और अपार शक्ति के कारण बाघ को भारत के राष्‍ट्रीय जानवर के रूप में गौरवान्वित किया है। ज्ञात आठ किस्‍मों की प्रजाति में से शाही बंगाल टाइगर (बाघ) उत्‍तर पूर्वी क्षेत्रों को छोड़कर देश भर में पाया जाता है और पड़ोसी देशों में भी पाया जाता है, जैसे नेपाल, भूटान और बांग्‍लादेश। भारत में बाघों की घटती जनसंख्‍या की जांच करने के लिए अप्रैल 1973 में प्रोजेक्‍ट टाइगर (बाघ परियोजना) शुरू की गई। अब तक इस परियोजना के अधीन 27 बाघ के आरक्षित क्षेत्रों की स्‍थापना की गई है जिनमें 37, 761 वर्ग कि.मी. क्षेत्र शामिल है।

राष्ट्रीय पुष्प








कमल (निलम्‍बो नूसीपेरा गेर्टन) भारत का राष्‍ट्रीय फूल है। यह पवित्र पुष्‍प है और इसका प्राचीन भारत की कला और गाथाओं में विशेष स्‍थान है और यह अति प्राचीन काल से भारतीय संस्‍कृति का मांगलिक प्रतीक रहा है।

भारत पेड़ पौधों से भरा है। वर्तमान में उपलब्‍ध डाटा वनस्‍पति विविधता में इसका विश्‍व में दसवां और एशिया में चौथा स्‍थान है। अब तक 70 प्रतिशत भौगोलिक क्षेत्रों का सर्वेक्षण किया गया उसमें से भारत के वनस्‍पति सर्वेक्षण द्वारा 47,000 वनस्‍पति की प्रजातियों का वर्णन किया गया है।




पैन कार्ड क्या है और क्या काम आता है - What is PAN Card in Hindi

पैन कार्ड एक महत्वपूर्ण पत्र हैं. जो इस बात का सबूत हैं कि आप भारतीय आयकर दाता हैं. पैन कार्ड पर 10 अंको की एक संख्या होती हैं, जो कि एक यूनिक नंबर हैं इस नंबर के प्रत्येक अंक का एक मतलब होता हैं.

पैन कार्ड का पूरा नाम "परमानेंट अकाउंट नम्बर" होता है। ये एक identification कार्ड होता है जिसे हर तरह के फाइनेंसियल लेन देन के लिए इस्तेमाल किया जाता है.

जानें पैन कार्ड पर लिखे हर नंबर का मतलब

पैन कार्ड नंबर के पहले तीन डिजिट अंग्रेजी लेटर होते हैं।

 -ये AAA, ZZZ या कुछ भी हो सकते हैं। 

 -यह तीनों डिजिट कौन से होंगे इसे आयकर विभाग तय करता है। 

 -पैन कार्ड नंबर का चौथा डिजिट भी अंग्रेजी का शब्‍द होता है। 

 -यह धारक के स्टेटस को बताता है।

 P- एकल व्यक्ति 

 F- फर्म 

 C- कंपनी 

 A- AOP ( एसोसिएशन ऑफ पर्सन) 

 T- ट्रस्ट 

 H- HUF (हिन्दू अनडिवाइडिड फैमिली) 

 B-BOI (बॉडी ऑफ इंडिविजुअल) 

 L- लोकल 

 J- आर्टिफिशियल जुडिशियल पर्सन 

 G- गवर्नमेंट के लिए

पैन कार्ड नंबर में दर्ज पांचवां डिजिट भी एक अंग्रेजी का शब्‍द होता है। 

    -यह धारक के सरनेम (जाति) के हिसाब से तय होता है।

   -अगले चार डिजिट 0001 से लेकर 9999 तक कुछ भी हो सकते हैं। 

   -यह नंबर सीरीज मौजूदा समय में आयकर विभाग में चल रही सीरीज को दर्शाते है। 

  -इसका आखिरी डिजिट अल्फाबेट होता है, जो कोई भी हो सकता है।

पैन कार्ड आवेदन  के ऑनलाइन स्टेप्स (Process of apply for PAN card Online):





















ऑनलाइन आवेदन चाहे एनएसडीएल के पोर्टल ( https://tin.tin.nsdl.com/pan/index.html) अथवा चाहे यूटीआईटीएसएस के पोर्टल (https://www.utiitsl.com/UTIITSL_SITE/pan/index.html​​​​​​​​) के माध्यम से किया जा सकता है. प्रभावी तिथि 16/01/2014 से स्थाई खाता संख्या के ऑनलाइन आवेदन के लिए शुल्क भारतीय पत्राचार पते के लिए पैन आवेदन शुल्क रू. 93 (वस्तु एवं सेवा कर अलग से) तथा विदेशी पते के लिए पैन शुल्क रू. 864 (वस्तु एवं सेवा कर अलग से​​​​) कर दिया गया है। आवेदन के लिए भुगतान नेट बैंकिंग, क्रेटिड कार्ड अथवा डेबिट कार्ड द्वारा किया जा सकता है। एक बार प्रपत्र तथा भुगतान के जमा की जाती है तो आवेदक को एनएसडीएल/यूटीआईटीएसएल को कुरियर/डाक के माध्यम से समर्थित दस्तावेजों को भेजना आवश्यक हैं। केवल दस्तावेजों की प्राप्ति के पश्चात् ही एनएसडीएल/यूटीआईटीएसएल द्वारा स्थाई खाता संख्या आवेदक को प्रसंस्करित किया जाना चाहिए

Drupal 8 Create a custom page

For creating custom page in Drupal 8, there are two Steps.

Step 1:  First, you need to declare the routing in <module_name>.routing.yml.

Step 2: Secondly, you need to add a controller that returns the page body in    example/src/Controller/ExampleController.php.

Example are below for creating a simple page through custom module.

#Declaring a routes

The routing information is stored in example/example.routing.yml:






example.my_page

This is the machine name of the route. By convention, route machine names should be module_name.sub_name. When other parts of the code need to refer to the route, they will use the machine name.

path

This gives the path to the page on your site. Note the leading slash (/).

defaults

This describes the page and title callbacks. @todo: Where can these defaults be overridden? 

requirements

This specifies the conditions under which the page will be displayed. You can specify permissions, modules that must be enabled, and other conditions. 

#Add a controller (page callback)

The controller returns the page body. It must be either a class method or a registered service. It can be different depending on various conditions (HTTP vs. HTTPS, content headers, others) but that is beyond the scope of this introduction.

The Controller class ExampleController should be defined in example/src/Controller/ExampleController.php:

namespace

This declares the prefix needed to fully qualify the name of the class we are defining. Compare the file's doc block and the name of the class. The class auto-loader knows that, to find the class \Drupal\example\Controller\ExampleController, it should look for the file modules/example/src/Controller/ExampleController.php.

use

This allows us to use ControllerBase instead of the fully qualified name. This makes our class line much easier to read.

 myPage()

The method specified in the YAML file must be public. It should return a renderable array.



Drupal 8: How to create a custom block programmatically

 Blocks in Drupal 8 are instances of the block plugin.

The Drupal block manager scans your modules for any classes that contain a @Block Annotation 

Creating a custom block require following steps:

1. Create a block plugin using Annotations

2. Extend the Drupal\Core\Block\BlockBase class.

The example snippet below makes use of the @Block annotation along with the properties "id" and "admin_label" to define a custom block.

Create the file src/Plugin/Block/TestBlock.php within the module skeleton created earlier and add the code below. You will, of course, need to rebuild the cache.



To add 'Test block' you can go to Structure -> Block Layout (admin/structure/block) and click on 'Place Block' button associated with each available region.

Clicking on 'Place Block' button for any given region a "Place Block" dialogue pop-up will appear, with a listing of all available blocks. To quickly find your block, simply use 'Filter by block name' option or use mouse-scroll to locate Test block'. This way you can add any number of instances of the custom block anywhere on your site.

Below is the Step to add twig template with custom created Block

Create your test .module file if you don't have one and add hook_theme() with defined variables names, and Twig template name.



Now clear cache and go to Structure -> Block layout. Find your block and place it in the region you want.

Next step is to create Twig file and render variables. In your themes folder open the theme that you use e.g. testtheme and open folder templates/block. Now, create a file block--test-custom.html.twig (we defined the namespace in the array 'template' in the first example). 

Render variables to Twig HTML:



How do I create a new theme in Drupal 8?

 The main difference between theming of Drupal 7 & Drupal 8 is theme engine. In Drupal 7 supports PHPTemplate and Drupal 8 leverages Twig engine.

Open your installed Drupal project folder in any editor you prefer. Under the themes folder create a folder with your desired theme name.

Step 1:  Create .info file

An Important part of Drupal theme or module is .info file. Through this file drupal will understand whether it is theme or module.

In Drupal 7 it was .info but in D8 it changes to .info.yml (called as yaml). So to create a theme, first create a folder and name it after the theme. In this case let’s say theme name is “Test”, So create a folder of name test. Notice that all letters are in small. Now in this folder create a file and save it as test.info.yml. This is our info file. The rest is same as Drupal 7 .info file

/*——————————— Code starts here ——————————————–*/

name: Test

type: theme

description: ‘This is D8 theme based on bootstrap’

core: 8.x

regions:

 top_header_first: ‘Top Header First’

 top_header_second: ‘Top Header Second’

 top_header_third: ‘Top Header Third’

 top_header_fourth: ‘Top Header Fourth’

 header: ‘Header’

 logo: ‘Logo’

 primary_menu: ‘Primary Menu’

 page_title: ‘Page Title’

 breadcrumb: ‘Breadcrumb’

 slider: ‘Slider’

 content: ‘Content’

 sidebar_right: ‘Sidebar Right’

 footer_first: ‘Footer First’

 footer_second: ‘Footer Second’

 footer_third: ‘Footer Third’

 footer_fourth: ‘Footer Fourth’

 footer_fifth: ‘Footer Fifth’

 footer_sixth: ‘Footer Sixth’

/*——————————— Code ends here ——————————————–*/

Now go to the Appearance section and you will see Test theme. Don’t enable it yet, we still have to define the layout of our theme.

Step 2: Create .libraries.yml file

Then comes the .libraries.yml file. The main purpose of this file is to include all the css and js files. In Drupal 7 these file were included in .info file directly. In Drupal 8 they are also included in .info.yml file but indirectly.

Now create test.libraries.yml file in root directory of theme folder.

/*——————————— Code starts here ——————————————–*/

custom:

 version: 1.x

 css:

   theme:

     includes/bootstrap/css/bootstrap.css: {}

 js:

   includes/bootstrap/js/bootstrap.js: {}

 dependencies:

   – core/jquery

   – core/drupal.ajax

   – core/drupal

   – core/drupalSettings

   – core/jquery.once

 global-style:

 version: 1.x

 css:

   theme:

     css/custom.css: {}

fonts:

 version: 1.x

 css:

   theme:

     ‘//fonts.googleapis.com/css?family=Montserrat’: {type: external}

     ‘//fonts.googleapis.com/css?family=Kaushan+Script|Courgette|Kalam’:{type:external}

     ‘//fonts.googleapis.com/css?family=Open+Sans+Condensed:300’:{type:external}

/*——————————— Code ends here ——————————————–*/

Consider custom in above code as container of the css and js files. In above file there are 3 containers custom, global-style and font. You can name the anything you want. Under these container we define the css and js files which we want to use in our theme.

Note: Use spacebar instead of tabs or it will throw an error.

Now define these containers to .info.yml file like this


libraries:

 – test/custom

 – test/global-style

 – test/fonts


By defining libraries section in .info.yml file we tell Drupal to look for .libraries.yml file and find there custom,global-style and fonts container.

So the here is how test.info.yml file will look like

/*——————————— Code starts here ——————————————–*/

name: Test

type: theme

description: ‘This is D8 theme based on bootstrap’

core: 8.x

libraries:

 – test/bootstrap

 – test/global-style

 – test/fonts

regions:

 top_header_first: ‘Top Header First’

 top_header_second: ‘Top Header Second’

 top_header_third: ‘Top Header Third’

 top_header_fourth: ‘Top Header Fourth’

 header: ‘Header’

 logo: ‘Logo’

 primary_menu: ‘Primary Menu’

 page_title: ‘Page Title’

 breadcrumb: ‘Breadcrumb’

 slider: ‘Slider’

 content: ‘Content’

 sidebar_right: ‘Sidebar Right’

 footer_first: ‘Footer First’

 footer_second: ‘Footer Second’

 footer_third: ‘Footer Third’

 footer_fourth: ‘Footer Fourth’

 footer_fifth: ‘Footer Fifth’

 footer_sixth: ‘Footer Sixth’

/*——————————— Code ends here ——————————————–*/

Next is test.theme file. In Drupal 7 this file was used to be template.php. Just the name is different.

Step 3: Create page.html.twig file

Now we have told drupal that this is theme for core version 8 and also specify the css and js file which we want to include in our .info.yml amd libraries.yml file. Now lets define the page layout of our theme. For this create template folder in the theme directory and create new file named as page.html.tiwg. In Drupal 7 this file used to be named as page.tpl.php.

This naming difference because we are using twig theme engine.

/*——————————— Code starts here ——————————————–*/

{% if page.explore_block or page.booking_block %}

<div class = “row”>

{% if page.explore_block %}

<div class = {{explore_block_class}} >

{{ page.explore_block }}

</div>

{% endif %}

{% if page.booking_block %}

<div class = {{ booking_block_class }}>

{{ page.booking_block }}

</div>

{% endif %}

</div>

{% endif %}

/*——————————— Code ends here ——————————————–*/

Let’s go through this file and see what’s going on. The first thing we notice are the two different types of code blocks (also called block delimiters). One type of code block is marked by double curly braces like so:


{{…}}   This is used to print a variable


{% … %} This is for usinf loop, function etc etc.


{# This is used for comments. #}


You will notice that in above piece of code the “if .. endif” goes inside the {% … %} braces and variable to print goes inside {{ … }}. so like above code define the HTML structure and print the variable using the appropriate braces.

Once the page.html.twig is completed, the theme is ready to use.

Implementing #autocomplete in Drupal 8 with Custom Callbacks

 Autocomplete on text fields like tags / user & node reference helps improve the UX and interactivity for your site visitors, In this blog post I'd like to cover how to implement autocomplete functionality in Drupal 8, including implementing a custom callback

Step 1: Assign autocomplete properties to textfield

As per Drupal Change records, #autocomplete_path has been replaced by #autocomplete_route_name and #autocomplete_parameters for autocomplete fields ( More details -- https://www.drupal.org/node/2070985).

The very first step is to assign appropriate properties to the textfield:

1: '#autocomplete_route_name':

2: for passing route name of callback URL to be used by autocomplete Javascript Library.

3: '#autocomplete_route_parameters':

4: for passing array of arguments to be passed to autocomplete handler.







Thats all! for adding an #autocomplete callback to a textfield. 

However, there might be cases where the routes provided by core might not suffice as we might different response in JSON or additional data. Lets take a look at how to write a autocomplete callback, we will be using using my_module.autocomplete route and will pass arguments: 'name' as field_name and 10 as count.

Step 2: Define autocomplete route

Now, add the 'my_module.autocomplete' route in my_module.routing.yml file as:








While Passing parameters to controller, use the same names in curly braces, which were used while defining the autocomplete_route_parameters. Defining _format as json is a good practice.

Step 3: Add Controller and return JSON response

Finally, we need to generate the JSON response for our field element. So, proceeding further we would be creating AutoCompleteController class file at my_module > src > Controller > AutocompleteController.php.




















We would be extending ControllerBase class and would then define our handler method, which will return results. Parameters for the handler would be Request object and arguments (field_name and count) passed in routing.yml file. From the Request object, we would be getting the typed string from the URL. Besides, we do have other route parameters (field_name and Count) on the basis of which we can generate the results array. 


An important point to be noticed here is, we need the results array to have data in 'value' and 'label' key-value pair as we have done above. Then finally we would be generating JsonResponse by creating new JsonResponse object and passing $results.


That's all we need to make autocomplete field working. Rebuild the cache and load the form page to see results.


Write a program in PHP to reverse a number

A number can be written in reverse order. For example 12345 = 54321 <?php   $ num = 23456;   $ revnum = 0;   while ($ num > 1)   {   $...