เปลี่ยนเส้นทางไปยัง URL ก่อนหน้าหลังจากเข้าสู่ระบบผู้ดูแลระบบ


9

ฉันต้องการให้ผู้ดูแลระบบเปลี่ยนเส้นทางไปยัง URL ที่พวกเขาเปิดหลังจากลงชื่อเข้าใช้ พวกเขาควรจะได้รับลิงค์ไปยังหน้าโมดูลที่กำหนดเองในพื้นที่ผู้ดูแลระบบเช่น

https: //magento.example/index.php/admin/admin_mycoolmodule/adminhtml_viewawesome/view/showpage/awesome/howmuch/9001/

เห็นได้ชัดว่าพวกเขาจะถูกเปลี่ยนเส้นทางไปยังหน้าเข้าสู่ระบบเว้นแต่พวกเขาจะเข้าสู่ระบบแล้ว

ฉันจะเปลี่ยนเส้นทางพวกเขากลับมาที่หน้านี้หลังจากเข้าสู่ระบบได้อย่างไร

รหัสลับใน URL ถูกปิดใช้งานและสามารถอยู่ต่อได้

ตอนนี้พวกเขาได้รับหน้าเริ่มต้นที่กำหนดค่าไว้ (ค่าเริ่มต้นคือแดชบอร์ด) แทน


ตกลงคุณต้องการเปลี่ยนผู้ดูแลระบบเป็นหลักเพื่อเปลี่ยนเส้นทางไปยังหน้าเว็บที่กำหนดเองแทนแดชบอร์ดหลังจากเข้าสู่ระบบใช่ไหม
amit_game

ไม่นั่นเป็นเพียงแค่การตั้งค่า ฉันต้องการให้เปลี่ยนเส้นทางไปยัง URL ใดก็ตามที่เปิดก่อนเข้าสู่ระบบ
Josef พูดว่า Reinstate Monica

ฉันไม่คิดว่าคุณจะทำสิ่งนี้ได้นอกกรอบ คุณจะต้องทำการปรับแต่ง
brentwpeterson

1
นี่เป็นพฤติกรรมเริ่มต้นใน Magento หรือไม่ หากคุณพยายามไปที่หน้าผู้ดูแลระบบคุณจะได้รับการเปลี่ยนเส้นทางไปยังหน้าเข้าสู่ระบบและหลังจากการเข้าสู่ระบบที่ประสบความสำเร็จคุณกลับไปที่หน้านั้นไม่ใช่แดชบอร์ด
Javier Villanueva

1
มันเป็นพฤติกรรมเริ่มต้นสำหรับส่วนหน้า สำหรับแบ็กเอนด์มันจะพาคุณไปที่แผงควบคุม บางทีคุณอาจทำซ้ำ การดำเนินการทั้งหมดจะทำในรหัส / core / Mage / ลูกค้า / controllers / AccountController.php ค้นหา getBeforeAuthUrl และ setBeforeAuthUrl อย่างไรก็ตามมันไม่ใช่งาน 5 นาที
ซามูเอลโคแมน

คำตอบ:


1

ตามความคิดเห็นทั้งหมดที่ระบุไว้ก่อนหน้านี้มันไม่ได้ออกมานอกกรอบ นี่คือคำแนะนำบางประการเกี่ยวกับสถานที่ / สิ่งที่คุณอาจต้องปรับ:

Mage_Admin_Model_User

public function getStartupPageUrl()
    {
        $startupPage = Mage::getStoreConfig(self::XML_PATH_STARTUP_PAGE);
        $aclResource = 'admin/' . $startupPage;
        if (Mage::getSingleton('admin/session')->isAllowed($aclResource)) {
            $nodePath = 'menu/' . join('/children/', explode('/', $startupPage)) . '/action';
            $url = (string)Mage::getSingleton('admin/config')->getAdminhtmlConfig()->getNode($nodePath);
            if ($url) {
                return $url;
            }
        }
        return $this->findFirstAvailableMenu();
    }

ฉันไม่เคยลองเลย แต่นี่เป็นวิธีที่เรียกว่า

Mage_Adminhtml_IndexController

และมี IndexAction ที่เรียกใช้ฟังก์ชันข้างต้น ตั้งแต่นี้เป็นผู้ดูแลระบบการเขียนแบบจำลองใหม่อาจจะง่ายกว่า

/**
 * Admin area entry point
 * Always redirects to the startup page url
 */
public function indexAction()
{
    $session = Mage::getSingleton('admin/session');
    $url = $session->getUser()->getStartupPageUrl();
    if ($session->isFirstPageAfterLogin()) {
        // retain the "first page after login" value in session (before redirect)
        $session->setIsFirstPageAfterLogin(true);
    }
    $this->_redirect($url);
}

ดังนั้นการแก้ไข getStartupPageUrl () เพื่อให้ URL ของคุณน่าจะเป็นที่ที่ดีที่สุดในการลอง

ทั้งหมดนี้เป็นทฤษฏีฉันยังไม่ได้ลอง แต่ถ้าคุณต้องการโมดูลตัวอย่างฉันสามารถวิ่งผ่านสิ่งนี้ได้และให้มัน

หากผู้ใช้งานแอดมินทุกคนจะลงเอยด้วยหน้าเดียวกันมันค่อนข้างง่ายที่จะทำหากมีองค์ประกอบแบบไดนามิกมันจะยากขึ้นนิดหน่อยที่จะอำนวยความสะดวก โชคดี!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.