"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > PHP के साथ मार्कडाउन प्रस्तुत करने के लिए ट्विग का उपयोग करना

PHP के साथ मार्कडाउन प्रस्तुत करने के लिए ट्विग का उपयोग करना

2024-11-08 को प्रकाशित
ब्राउज़ करें:585

Using Twig for rendering Markdown with PHP

ट्विग सिम्फनी के साथ वेब एप्लिकेशन विकसित करते समय HTML रेंडर करने के लिए एक टेम्प्लेटिंग इंजन है।
हालाँकि, ट्विग का लचीलापन केवल HTML पेज बनाने से कहीं आगे तक फैला हुआ है। यह कई चैनलों पर सामग्री वितरित करने के लिए एक शक्तिशाली उपकरण हो सकता है, जैसे कि मार्कडाउन फ़ाइलें उत्पन्न करना, JSON आउटपुट और यहां तक ​​कि सादा पाठ, सभी सामग्री के एक ही सेट से।

यह अनुकूलनशीलता आपको विभिन्न चैनलों के लिए सामग्री बनाने की अनुमति देती है।

आप HTML, मार्कडाउन, JSON, टेक्स्ट इत्यादि उत्पन्न करने के लिए ट्विग का उपयोग कर सकते हैं

उपयोग का मामला: सिम्फनी के साथ मार्कडाउन के रूप में एक नुस्खा लाना और प्रस्तुत करना

इस उदाहरण में, हम बाहरी एपीआई (https://dummyjson.com/recipes/1) से एक रेसिपी लाने के लिए सिम्फनी के HTTP क्लाइंट का उपयोग करते हैं और इसे ट्विग का उपयोग करके मार्कडाउन दस्तावेज़ के रूप में प्रस्तुत करते हैं।
यह दृष्टिकोण दिखाता है कि आप सिम्फनी के शक्तिशाली पैकेजों को कैसे जोड़ सकते हैं, जैसे बाहरी डेटा पुनर्प्राप्ति के लिए सिम्फनी HTTP क्लाइंट और दृश्य प्रस्तुत करने के लिए ट्विग, कई चैनलों में सामग्री वितरित करने के लिए, जैसे कमांड-लाइन टूल में मार्कडाउन रिपोर्ट।

हम जिस कमांड/स्क्रिप्ट का निर्माण करने जा रहे हैं वह एपीआई से रेसिपी डेटा (शीर्षक, विवरण, सामग्री और निर्देश) लाता है, इसे संसाधित करता है, और फिर सामग्री को संरचित मार्कडाउन प्रारूप में आउटपुट करने के लिए ट्विग का उपयोग करता है। यह व्यावहारिक उपयोग मामला दिखाता है कि वेब टेम्प्लेट से परे ट्विग का उपयोग कैसे किया जाए, जो इसे विभिन्न प्रारूपों में सामग्री तैयार करने के लिए बहुमुखी बनाता है।

तो, हम इसका उपयोग करने जा रहे हैं:

  • सिम्फनी कंसोल कमांड लाइन टूल बनाने के लिए घटक https://symfony.com/doc/current/components/console.html
  • सिम्फनी HTTP क्लाइंट HTTP एपीआई लाने और उपभोग करने के लिए https://symfony.com/doc/current/http_client.html
  • सिम्फनी ट्विग डेटा रेंडर करने के लिए https://twig.symfony.com/doc/3.x/intro.html#installation
  • रेसिपी एपीआई: हम एक संरचित JSON को पुनः प्राप्त करने और इसे एक मार्कडाउन फ़ाइल में परिवर्तित करने की प्रक्रिया को दिखाने और प्रदर्शित करने के लिए एक "डमी" रेसिपी https://dummyjson.com/recipes/1 चुनेंगे। .

आवश्यक सिम्फनी घटकों को स्थापित करना

सुनिश्चित करें कि आपके पास HTTP अनुरोधों और कमांड बनाने के लिए आवश्यक घटक स्थापित हैं:

composer require symfony/http-client symfony/console twig/twig

एक सिम्फनी कमांड बनाएं

सबसे पहले, आइए एक नया सिम्फनी कमांड बनाएं।

यदि आप सिम्फनी कमांड घटक का उपयोग करके कमांड लाइन टूल बनाने के तरीके के बारे में अधिक पढ़ना चाहते हैं, तो मैंने इसके बारे में एक विशिष्ट लेख लिखा है: https://dev.to/robertobutti/building-a-command-line-tool -साथ-php-और-सिम्फनी-कंसोल-4n6g

कमांड वर्ग, आम तौर पर src/कमांड निर्देशिका में जाते हैं।

# create a new empty directory
mkdir -p src/Commands
# create a new empty file
touch src/Commands/FetchRecipeCommand.php

कमांड क्लास (जैसे, src/Commands/FetchRecipeCommand.php):

setName('recipe')
            ->setDescription('Prints a recipe in Markdown')
            ->setHelp('This command prints a simple recipe in Markdown.');
        // Step 1: loading the Twig environment
        $loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/../resources/views');
        $twig = new \Twig\Environment(
            $loader,
            // Optional: Enable caching for better performance
            /*[
                'cache' => __DIR__ . '/../../cache',
            ]*/
        );

        $this->twig = $twig;
        parent::__construct();
    }

    protected function configure()
    {
        $this->setDescription('Fetches a recipe from an API and renders it as Markdown');
    }

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        // Step 2: Initialize the HTTP client and fetch the recipe
        $client = HttpClient::create();
        $response = $client->request('GET', 'https://dummyjson.com/recipes/1');

        // Step 3: obtain the array of info
        $recipeData = $response->toArray();

        // Step 4: Render the template using Twig, returning a string
        $markdownOutput = $this->twig->render('recipe.md.twig', $recipeData);

        // Step 5: Output the generated Markdown
        $output->writeln($markdownOutput);

        return Command::SUCCESS;
    }
}

यहां FetchRecipeCommand उदाहरण में प्रत्येक चरण का विस्तृत विवरण दिया गया है।

चरण-दर-चरण विखंडन

चरण 1: टहनी वातावरण लोड करना

ट्विग को इसके विशिष्ट वेब संदर्भ के बाहर उपयोग करने के लिए, जैसे कि PHP कमांड-लाइन टूल में, आपको पहले इसे ट्विग\एनवायरमेंट क्लास के माध्यम से मैन्युअल रूप से प्रारंभ करना होगा। यहां कंसोल कमांड में ट्विग के लिए एक उदाहरण सेटअप दिया गया है:

$loader = new \Twig\Loader\FilesystemLoader(__DIR__ . '/../resources/views');
$twig = new \Twig\Environment(
    $loader,
    // Optional: Enable caching for better performance
    /*[
        'cache' => __DIR__ . '/../../cache',
    ]*/
);
$this->twig = $twig;

स्पष्टीकरण:

  • ट्विग वातावरण को एक फाइलसिस्टम लोडर बनाकर आरंभ किया गया है जो ट्विग को बताता है कि टेम्पलेट कहां ढूंढना है। यह मामला src/resources/views फ़ोल्डर की ओर इंगित करता है जहां आपके ट्विग टेम्पलेट संग्रहीत हैं।
  • फिर, $twig वातावरण तत्काल तैयार हो जाता है और टेम्प्लेट प्रस्तुत करने के लिए जिम्मेदार होता है। पूर्व-संकलित टेम्प्लेट संग्रहीत करके प्रदर्शन को बेहतर बनाने के लिए वैकल्पिक कैशिंग को सक्षम किया जा सकता है।
  • अंत में, प्रारंभिक $twig वातावरण को बाद में उपयोग के लिए $this->twig को सौंपा गया है (निष्पादन() विधि में)।

चरण 2: HTTP क्लाइंट प्रारंभ करें और रेसिपी प्राप्त करें

$client = HttpClient::create();
$response = $client->request('GET', 'https://dummyjson.com/recipes/1');

स्पष्टीकरण:

  • सिम्फनी HTTP क्लाइंट HttpClient::create() विधि का उपयोग करके बनाया गया है, जो कमांड को HTTP अनुरोध करने की अनुमति देता है।
  • एक नुस्खा लाने के लिए, अनुरोध() विधि निर्दिष्ट यूआरएल (https://dummyjson.com/recipes/1) पर एक GET अनुरोध निष्पादित करती है।
  • एपीआई $रिस्पॉन्स वेरिएबल में संग्रहीत एक JSON प्रतिक्रिया लौटाता है।

चरण 3: जानकारी की श्रृंखला प्राप्त करना

$recipeData = $response->toArray();

स्पष्टीकरण:

  • ToArray() विधि एपीआई से JSON प्रतिक्रिया को PHP सरणी में परिवर्तित करती है। इस सरणी में रेसिपी का डेटा (उदाहरण के लिए, नाम, सामग्री, निर्देश) शामिल है, जिसका उपयोग अगले चरण में ट्विग टेम्पलेट को पॉप्युलेट करने के लिए किया जाएगा।

चरण 4: ट्विग का उपयोग करके टेम्पलेट प्रस्तुत करना

$markdownOutput = $this->twig->render('recipe.md.twig', $recipeData);

स्पष्टीकरण:

  • ट्विग पर्यावरण की रेंडर() विधि मार्कडाउन आउटपुट उत्पन्न करती है। यह src/resources/views फ़ोल्डर से टेम्पलेट (recipe.md.twig) लोड करता है।
  • एपीआई ($रेसिपीडेटा) से प्राप्त रेसिपी डेटा को टेम्पलेट में पास किया जाता है, जहां यह रेसिपी के नाम, सामग्री और निर्देशों जैसे प्लेसहोल्डर्स को बदल देगा, जिससे एक पूरी तरह से स्वरूपित मार्कडाउन फ़ाइल बन जाएगी।
  • रेंडर की गई मार्कडाउन सामग्री (रेंडर() विधि द्वारा लौटाई गई स्ट्रिंग) $markdownOutput वेरिएबल में संग्रहीत है।

चरण 5: उत्पन्न मार्कडाउन के लिए आउटपुट तैयार करना

$output->writeln($markdownOutput);

स्पष्टीकरण:

  • अंतिम मार्कडाउन सामग्री $output->writeln() विधि का उपयोग करके कंसोल पर मुद्रित की जाती है। यह विधि स्ट्रिंग को कंसोल पर आउटपुट करती है, जिससे उपयोगकर्ता मार्कडाउन प्रारूप में स्वरूपित नुस्खा देख सकते हैं (अंततः, आप आउटपुट को शेल में एक फ़ाइल में रीडायरेक्ट कर सकते हैं)।

स्टार्टर फ़ाइल बनाना

उपयोगकर्ता को सीधे शेल से अपना सिम्फनी कमांड लॉन्च करने की अनुमति देने के लिए आपको एक स्टार्टर फ़ाइल बनानी होगी। (इस लेख में, हम एक सिम्फनी एप्लिकेशन नहीं बना रहे हैं; हम सिम्फनी पैकेज का उपयोग करके एक PHP स्क्रिप्ट बना रहे हैं।)
प्रोजेक्ट निर्देशिका में, जहां आपके पास कंपोज़र.जेसन फ़ाइल है और जहां आपके पास src निर्देशिका है, आप एक माय-ऐप फ़ाइल बना सकते हैं।

#!/usr/bin/env php
setDefaultCommand("recipe");

$app->add(new FetchRecipeCommand());


$app->run();

नामस्थानों और कक्षाओं का सही ढंग से उपयोग करने के लिए कंपोजर.जेसन फ़ाइल में ऑटोलोड अनुभाग सेट करना सुनिश्चित करें:

{
    "require": {
        "symfony/http-client": "^7.1",
        "symfony/console": "^7.1",
        "twig/twig": "^3.14"
    },
    "autoload": {
        "psr-4": {
            "MyExample\\": "src/"
        }
    }
}

यदि आप ऑटोलोड अनुभाग बदलते हैं तो मैं ऑटोलोड फ़ाइल को डंप करने का सुझाव देता हूं:

composer dump-autoload

अब, आपको एपीआई द्वारा पुनर्प्राप्त डेटा को प्रस्तुत करने के लिए ट्विग टेम्पलेट/व्यू बनाना होगा।

रेसिपी के लिए एक ट्विग टेम्प्लेट/व्यू बनाएं

इसके बाद, रेसिपी को मार्कडाउन प्रारूप में प्रस्तुत करने के लिए एक ट्विग टेम्पलेट/व्यू बनाएं।
इस टेम्पलेट को दृश्य निर्देशिका में जाना चाहिए (उदाहरण के लिए, src/resources/view/recipe.md.twig)।

# Recipe: {{ name }}

- Preparation time: {{ prepTimeMinutes }} minutes
- Cooking time {{ cookTimeMinutes }} minutes
- Difficulty level: {{ difficulty }}
- Cuisine: {{ cuisine }}
- Servings {{ servings }} people, with {{ caloriesPerServing }} calories per person

## Ingredients:

{% for ingredient in ingredients %}
- {{ ingredient }}
{% endfor %}

## Instructions:

{% for instruction in instructions %}
- {{ instruction }}
{% endfor %}

Enjoy!

यह ट्विग व्यू फ़ाइल रेसिपी के नाम, सामग्री और निर्देशों के अनुभागों के साथ, मार्कडाउन प्रारूप में रेसिपी प्रस्तुत करेगी।

आदेश चला रहा है

कमांड निष्पादित करने के लिए, टर्मिनल में निम्नलिखित चलाएँ:

php my-app

यदि आपके पास एक से अधिक कमांड हैं, तो आप लॉन्च कर सकते हैं:

php m-app recipe

सभी उपलब्ध कमांड देखने के लिए:

php my-app list

निष्कर्ष

इस दृष्टिकोण के साथ, आप सिम्फनी के HTTP क्लाइंट का उपयोग करके बाहरी एपीआई से आसानी से डेटा पुनर्प्राप्त कर सकते हैं, प्रतिक्रिया संसाधित कर सकते हैं, और ट्विग का उपयोग करके आउटपुट को संरचित प्रारूप में प्रस्तुत कर सकते हैं। इस मामले में, कमांड एक रेसिपी को मार्कडाउन के रूप में आउटपुट करता है, लेकिन इस तकनीक को किसी अन्य सामग्री या डेटा प्रकार के लिए अनुकूलित किया जा सकता है जिसे आपको संसाधित करने की आवश्यकता है।
अपनी रेसिपी का आनंद लें!

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/robertobutti/using-twig-for-rendering-markdown-with-php-2d24?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3