ट्विग सिम्फनी के साथ वेब एप्लिकेशन विकसित करते समय HTML रेंडर करने के लिए एक टेम्प्लेटिंग इंजन है।
हालाँकि, ट्विग का लचीलापन केवल HTML पेज बनाने से कहीं आगे तक फैला हुआ है। यह कई चैनलों पर सामग्री वितरित करने के लिए एक शक्तिशाली उपकरण हो सकता है, जैसे कि मार्कडाउन फ़ाइलें उत्पन्न करना, JSON आउटपुट और यहां तक कि सादा पाठ, सभी सामग्री के एक ही सेट से।
यह अनुकूलनशीलता आपको विभिन्न चैनलों के लिए सामग्री बनाने की अनुमति देती है।
आप HTML, मार्कडाउन, JSON, टेक्स्ट इत्यादि उत्पन्न करने के लिए ट्विग का उपयोग कर सकते हैं
इस उदाहरण में, हम बाहरी एपीआई (https://dummyjson.com/recipes/1) से एक रेसिपी लाने के लिए सिम्फनी के HTTP क्लाइंट का उपयोग करते हैं और इसे ट्विग का उपयोग करके मार्कडाउन दस्तावेज़ के रूप में प्रस्तुत करते हैं।
यह दृष्टिकोण दिखाता है कि आप सिम्फनी के शक्तिशाली पैकेजों को कैसे जोड़ सकते हैं, जैसे बाहरी डेटा पुनर्प्राप्ति के लिए सिम्फनी HTTP क्लाइंट और दृश्य प्रस्तुत करने के लिए ट्विग, कई चैनलों में सामग्री वितरित करने के लिए, जैसे कमांड-लाइन टूल में मार्कडाउन रिपोर्ट।
हम जिस कमांड/स्क्रिप्ट का निर्माण करने जा रहे हैं वह एपीआई से रेसिपी डेटा (शीर्षक, विवरण, सामग्री और निर्देश) लाता है, इसे संसाधित करता है, और फिर सामग्री को संरचित मार्कडाउन प्रारूप में आउटपुट करने के लिए ट्विग का उपयोग करता है। यह व्यावहारिक उपयोग मामला दिखाता है कि वेब टेम्प्लेट से परे ट्विग का उपयोग कैसे किया जाए, जो इसे विभिन्न प्रारूपों में सामग्री तैयार करने के लिए बहुमुखी बनाता है।
तो, हम इसका उपयोग करने जा रहे हैं:
सुनिश्चित करें कि आपके पास 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 उदाहरण में प्रत्येक चरण का विस्तृत विवरण दिया गया है।
ट्विग को इसके विशिष्ट वेब संदर्भ के बाहर उपयोग करने के लिए, जैसे कि 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;
स्पष्टीकरण:
$client = HttpClient::create(); $response = $client->request('GET', 'https://dummyjson.com/recipes/1');
स्पष्टीकरण:
$recipeData = $response->toArray();
स्पष्टीकरण:
$markdownOutput = $this->twig->render('recipe.md.twig', $recipeData);
स्पष्टीकरण:
$output->writeln($markdownOutput);
स्पष्टीकरण:
उपयोगकर्ता को सीधे शेल से अपना सिम्फनी कमांड लॉन्च करने की अनुमति देने के लिए आपको एक स्टार्टर फ़ाइल बनानी होगी। (इस लेख में, हम एक सिम्फनी एप्लिकेशन नहीं बना रहे हैं; हम सिम्फनी पैकेज का उपयोग करके एक 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 क्लाइंट का उपयोग करके बाहरी एपीआई से आसानी से डेटा पुनर्प्राप्त कर सकते हैं, प्रतिक्रिया संसाधित कर सकते हैं, और ट्विग का उपयोग करके आउटपुट को संरचित प्रारूप में प्रस्तुत कर सकते हैं। इस मामले में, कमांड एक रेसिपी को मार्कडाउन के रूप में आउटपुट करता है, लेकिन इस तकनीक को किसी अन्य सामग्री या डेटा प्रकार के लिए अनुकूलित किया जा सकता है जिसे आपको संसाधित करने की आवश्यकता है।
अपनी रेसिपी का आनंद लें!
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3