নতুন এক্সটেনশন ইনস্টলেশনতে কীভাবে 404 ত্রুটি এড়ানো যায়


27

এটি system.xml কনফিগারেশনের সাহায্যে একটি নতুন এক্সটেনশন ইনস্টল করার সময় ম্যাজেন্টোতে দেখা যায় এটি একটি খুব সাধারণ ত্রুটি :

আপনি যখন System->Configuration->Extensionট্যাবে যান, একটি 404 ত্রুটি দেখানো হয়। আপনাকে লগআউট এবং আবার লগইন করতে হবে এবং তারপর এটি ঠিক আছে। তবে এড়াতে কি কোনও উপায় আছে?


আমি বিশ্বাস করি না, এসিএল গাছটি লোড হয় যখন আপনি ব্যবহারকারীদের সেশনে লগ ইন করেন এবং সংরক্ষণ করেন।
পিটার ও'ক্যালাহান

আমার একটি ধারণা আছে তবে আমি জানি না এটি সম্ভব কিনা। এক্সটেনশন ইনস্টল হওয়ার পরে সমস্ত অ্যাডমিন সেশন মেয়াদ শেষ করতে আপনি "ম্যাজেন্টো কানেক্ট কানেক্ট ম্যানেজ" এর আচরণটি পরিবর্তন করতে পারেন। কিন্তু তার সম্ভাব্য না শুধুমাত্র কানেক্ট ম্যানেজার পরিধি থেকে এক্সটেনশন পরিধি থেকে করতে (((।।
oleksii.svarychevskyi

2
আপনার প্রশ্নের উত্তর আমার প্রশ্নের উত্তর! ধন্যবাদ!
ইয়ান ফিলিপস

আমাকে একটি মন্তব্য করতে হয়েছিল, কারণ আয়ান যেমন বলেছেন: "আপনার প্রশ্নটি আমার প্রশ্নের জবাব দিয়েছে"। লগিং করল কৌতুক!
হ্যানস ওয়াসিংক

উত্তর:


16

@ ক্যাগগুলি যেমন বলেছে, এটি (সহজেই) সম্ভব নয় কারণ সেশনটি শুরু হওয়ার সাথে সাথে এসিএল গাছটি লোড করা হয় (প্রশাসক লগ ইন করলে এ কেএ)। সিস্টেম কনফিগারেশন কন্ট্রোলারে পদ্ধতিটি
ওভাররাইড করা একটি সম্ভাব্য কাজ হতে পারে _isSectionAllowed: ( Mage_Adminhtml_System_ConfigController::_isSectionAllowed) এবং এটি এসিএল ট্রিটিকে পুনরায় লোড করা।
কিছুটা এইরকম:

protected function _isSectionAllowed($section)
{
    $session = Mage::getSingleton('admin/session');
    $session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl());//reload the tree
    return parent::_isSectionAllowed($secntion); //all the code from the original method
}

তবে এর অর্থ আপনি যখনই কোনও কনফিগার বিভাগে অ্যাক্সেস করবেন তখনই ACL ট্রিটি পুনরায় লোড হবে will আমি এটি করার কোনও অর্থ দেখছি না।
এছাড়াও আপনি এটি একটি নির্দিষ্ট বর্ধনের জন্য করতে পারবেন না। আপনাকে মূল শ্রেণিটি আবার লিখতে হবে।


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

আমি কখনই এটি চেষ্টা করি নি এবং কেবল সেশনটি এই মুহুর্তে উপলব্ধ কিনা তা আমি নিশ্চিত নই, তবে ইনস্টল স্ক্রিপ্ট থেকে পুনরায় লোড করা কি সম্ভব? অবশ্যই এটি তখনই কাজ করে যদি ইনস্টল স্ক্রিপ্টটি এমন কোনও অনুরোধ দ্বারা ট্রিগার করা হয় যেখানে আপনি প্রশাসক হিসাবে লগ ইন হয়ে থাকেন এবং এটি ব্যাকএন্ড ব্যবহারকারীদের মধ্যে থাকা
অন্যগুলিকে

2
@fschmengler। আমি এর আগে চেষ্টা করে দেখিনি, তবে আমি মনে করি এটি কার্যকর হতে পারে। সততার সাথে বানানো আমি মনে করি না যে এটি সমস্যার জন্য উপযুক্ত।
মারিয়াস

9

আমি খুব কম কাস্টমাইজেশন সহ এর আশেপাশে একটি উপায় পেয়েছি। আমাদের যা প্রয়োজন তা হ'ল:

  1. নতুন কন্ট্রোলার অ্যাকশন যা এসিএলটিকে পুনরায় লোড করে (লগ আউট এবং ইন না করে), তারপরে আগের পৃষ্ঠায় পুনঃনির্দেশ করে:

    class SSE_AclReload_Adminhtml_Permissions_AclReloadController extends Mage_Adminhtml_Controller_Action
    {
        public function indexAction()
        {
            $session = Mage::getSingleton('admin/session');
            $session->setAcl(Mage::getResourceModel('admin/acl')->loadAcl());
            Mage::getSingleton('adminhtml/session')->addSuccess($this->__('ACL reloaded'));
            $this->_redirectReferer();
        }
    }
  2. admin_norouteহ্যান্ডেলের জন্য একটি বিন্যাস আপডেট । আমরা প্রশাসক 404 পৃষ্ঠায় সরাসরি এই নতুন নিয়ামক ক্রিয়াকলাপে একটি লিঙ্ক যুক্ত করব:

    <layout version="0.1.0">
        <adminhtml_noroute>
            <reference name="content">
                <block type="adminhtml/template" name="content.aclReload" after="content.noRoute" template="sse_aclreload/button.phtml" />
            </reference>
        </adminhtml_noroute>
    </layout>
  3. এবং লিঙ্কটি সহ টেমপ্লেট:

    <a href="<?php echo $this->getUrl('adminhtml/permissions_aclReload/index'); ?>">
        <?php echo $this->__('Reload ACL'); ?>
    </a>

আমি এটি একসাথে গিথুবে একটি ছোট এক্সটেনশনে নিক্ষেপ করেছি: SSE_AclReload ( সিস্টেমটি> অনুমতি মেনুতেও লিঙ্কটি যুক্ত করুন )

আপনি অ্যাডমিন / নরওউট ক্রিয়া প্রেরণের সাথে সাথেই এসিএল স্বয়ংক্রিয়ভাবে পুনরায় লোড করার চেষ্টা করতে পারেন, তবে আমি 1 টি পছন্দ করি) কী চলছে এবং 2) একটি পছন্দ আছে।


1

আপনি যখন নতুন এক্সটেনশান ইনস্টল করেন এবং 404 ত্রুটি পৃষ্ঠা পান তখন আপনার যদি সমস্যা হয় তবে আপনার কেবলমাত্র একটি কাজটি করা দরকার System > Permissions > Roles। কেবল ভূমিকাটি সংরক্ষণ করুন এবং সাফ করতে ভুলবেন না var/cacheএবং var/seesion এবং আপনার সমস্যার সমাধান হয়ে গেছে।


"ক্লিয়ার ভার / সেশন"? সমস্ত গ্রাহক লগ আউট এবং তাদের গাড়ী খালি করতে? নাঃ।
ফ্যাবিয়ান শেমংলার

নুপ, কেবল অধিবেশনটি পরিষ্কার করুন, var ফোল্ডারে
হিরাল উনাদকাত

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

তারপরে আপনার যা করা দরকার তা হল সিস্টেম> অনুমতি> ভূমিকাগুলিতে যান এবং ভূমিকাটি সংরক্ষণ করুন।
হিরাল উনাদকাত

যা আপনার উত্তর সহ আমাদের অন্যান্য সমস্যার দিকে নিয়ে আসে: এটি কাজ করেও লগ আউট করা এবং ফিরে আসার চেয়ে বেশি চেষ্টা করা হয়, যা ওপি এড়াতে চায়।
ফ্যাবিয়ান শেমংলার

0

এটা চেষ্টা কর:

  1. প্রশাসন -> সিস্টেম -> ক্যাশে পরিচালনাতে যান to
  2. সমস্ত ক্যাশে প্রকার নির্বাচন করুন
  3. রিফ্রেশ হিসাবে পদক্ষেপ রাখুন এবং জমা দিন।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.