Magento 2 টি URL- এ সংরক্ষিত শব্দ ব্যবহার করা


11

স্ট্যান্ডার্ড রাউটিং ব্যবহার করে ম্যাজেন্টো 2-তে একটি মডিউল তৈরি করা সম্ভব, যা কোনও রূপে URL এর প্রতিক্রিয়া জানায়

http://magento.example.com/namespace_module/return/index

এটি হ'ল - এমন একটি URL যেখানে দ্বিতীয় প্যারামিটারটি পিএইচপি সংরক্ষিত কীওয়ার্ড। উপরের সমস্যাটি হল একটি পিএইচপি নিয়ন্ত্রক শ্রেণীর নাম তৈরি করা

Namespace\Module\Controller\Return\Index

এবং Returnনেমস্পেস থাকা অবৈধ পিএইচপি। আমি জানি যদি URL এর চূড়ান্ত প্যারামিটার (traditionতিহ্যগতভাবে ক্রিয়াকে বলা হয়) কোনও সংরক্ষিত কীওয়ার্ড হয়

http://magento.example.com/namespace_module/foo/return

যে ম্যাজেন্টো আমাকে নামের একটি নিয়ামক শ্রেণি তৈরি করতে দেয়

Namespace\Module\Controller\Foo\ReturnAction

তবে এটি দ্বিতীয় প্যারামিটারের জন্য কাজ করে না।

মানক Magento 2 রাউটিং কৌশলগুলি ব্যবহার করে এটি করার কোনও উপায় আছে?

যদি তা না হয় তবে এই আচরণটি পাওয়ার জন্য কাস্টম রাউটার অবজেক্টটি ইনজেকশনের জন্য একটি সাধারণভাবে বিবেচিত সেরা অনুশীলন, বা অন্য কোনও কৌশল যা আমাকে এটিকে ঘিরে কাজ করতে দেয়? (একটি afterপ্লাগইন চালু আছে Magento\Framework\App\Router\ActionList?)

উত্তর:


7

আমি এর জন্য একটি প্লাগইন যুক্ত করে শেষ করেছি Magento\Framework\App\Router\ActionList

<!-- File: app/code/Package/Namespace/etc/di.xml -->
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Framework\App\Router\ActionList">
        <plugin name="package_module_magento_framework_app_router_actionlist" type="Package\Module\Plugin\Magento\Framework\App\Router\ActionList"/>
    </type>
</config>

এবং তারপরে মেথডের $namespaceপ্যারামিটারের সাথে ফিডড হয়get

#File: app/code/Package/Module/Plugin/Magento/Framework/App/Router/ActionList.php
public function beforeGet($subject, $module, $area, $namespace, $action)
{
    if($namespace === 'return')
    {
        $namespace = 'returnaction';
    }
    return [$module, $area, $namespace, $action];
}

এটি আমাকে একটি শ্রেণীর নাম দিয়েছে

Package\Module\Controller\ReturnAction\Index

এটি কতটা ভাল ধারণা তা নিশ্চিত নয়, তাই ক্রেতা সাবধান, ইত্যাদি


এটি দেখতে সুন্দর এবং সহজ। বিশেষত কারণ এটি সমস্ত পিএইচপি সংরক্ষিত শব্দগুলিতে বাড়ানো যেতে পারে একইভাবে ক্রিয়া নামগুলি ক্রিয়া শ্রেণিতে ম্যাপ করা হয়। বিকল্প একটি কাস্টম রাউটার তৈরি করা হবে তবে এর জন্য আরও কোড প্রয়োজন।
মারিয়াস

2
কেবলমাত্র একটি দম্পতি মন্তব্য করেছেন: 1) এটি 'রিটার্ন' নিয়ামক ব্যবহার করার চেষ্টা করে এমন কোনও মডিউলটির নামস্থান পরিবর্তন করবে। আপনি যদি ইচ্ছাকৃতভাবে একটি 'ক্যাচল' তৈরি না করেন তবে আপনার নিজের মডিউলটি মেলানোর জন্য $ মডিউল প্যারামিটারটি পরীক্ষা করা ভাল। ২) আমরা যদি নামকরণের সমতা রক্ষার চেষ্টা করতে যাচ্ছি, তবে ফিরে আসা $ নামস্থানটি সম্ভবত 'রিটার্নকন্ট্রোলার' হওয়া উচিত - যা রিটার্নকন্ট্রোলার নামস্থান / ফাইলপথ অনুসন্ধান করবে। এটি তখন লোড হবে \Namespace\Module\Controller\ReturnController\Index- যা আরও সঠিক।
জেরেমি রিম্পো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.