मेरे स्लग इस तरह दिखते हैं:

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'rules' => [
                '<lang>/<p_page>/<p_category>/<p_product>' => 'splitter/manage-request',
                '<lang>/<p_page>/<p_category>' => 'splitter/manage-request',
                '<lang>/<p_page>' => 'splitter/manage-request',
                '<lang>/' => 'splitter/manage-request',
                '<lang>' => 'splitter/manage-request',
                '' => 'splitter/manage-request',
            ],
        ],

मैं सभी अनुरोध उस SplitterController को भेज रहा हूं जहां मैं उन्हें पार्स कर रहा हूं। लेकिन मैं नहीं चाहता कि AJAX को इसे भेजा जाए। क्या उन्हें कुछ डिफ़ॉल्ट मार्ग देना संभव है? उदाहरण के लिए उन्हें बैकएंड पुनर्निर्देशित करने के लिए। मुझे इसके बारे में दस्तावेज़ीकरण में जानकारी नहीं मिली? लिंक की सराहना करते हुए भी मैंने इसे याद किया है। शुक्रिया!

1
Toma Tomov 18 नवम्बर 2018, 00:56

1 उत्तर

सबसे बढ़िया उत्तर

मेरे अनुभव के अनुसार, आपके संदर्भ के लिए संभवत: निम्नलिखित विकल्प हैं:

पहला: सबसे आसान तरीका है कि आप अपने स्प्लिटरकंट्रोलर में पहले एक्शन () जोड़ें, यह निर्धारित करें कि क्या यह पहले एक्शन () में एक अजाक्स अनुरोध है, और अपने लक्ष्य पते पर रीडायरेक्ट करें, उदाहरण के लिए:

public function beforeAction() 
{
    if (\Yii::$app->request->isAjax) {
        return \Yii::$app->response->redirect($targetUrl);
    }
    return parent::beforeAction($action);
}

दूसरा: आप जांच सकते हैं कि अनुरोध nginx कॉन्फ़िगरेशन में एक अजाक्स अनुरोध है या नहीं और फिर अपने लक्ष्य पते पर रीडायरेक्ट करें

तीसरा: यदि आप अतिरिक्त रूटिंग नियम स्थापित नहीं कर सकते हैं और अजाक्स अनुरोध पते को कॉन्फ़िगर कर सकते हैं, तो आप UrlManager :: parseRequest () को अनुकूलित करके इसे लागू करने पर विचार कर सकते हैं, बस यह जांच लें कि यह अनुरोध को पार्स करने से पहले AJAX अनुरोध है या नहीं, फिर अपने लक्ष्य पर पुनर्निर्देशित करें। पता

इस उत्तर का अनुवाद Google अनुवाद से किया गया है

1
Luna 26 नवम्बर 2018, 08:16