PHP में MVC रूट्स में पैरामीटर्स
पिछले पाठ में हमारे रूट्स के फिक्स्ड एड्रेस थे। असल में रूटिंग मैकेनिज्म इससे ज्यादा कॉम्प्लेक्स है - ऐसा किया जा सकता है कि पेज के URI का एक हिस्सा नामित पैरामीटर्स में आ जाए, जो बाद में कंट्रोलर में एक्सेसिबल होते हैं।
मान लीजिए, उदाहरण के लिए, हमारे एड्रेस इस
तरह दिखते हैं: /test/param1/param2/,
जहाँ param1 और param2 कोई भी
स्ट्रिंग हो सकती है। इसके बावजूद हम चाहते हैं कि इस
तरह के एड्रेस को एक ही कंट्रोलर एक्शन द्वारा हैंडल किया जाए।
इसके लिए पैरामीटर का एक नाम सोचना चाहिए
और उससे पहले कोलन लगाना चाहिए, इस तरह:
<?php
use \Core\Route;
return [
new Route('/test/:var1/:var2/', 'page', 'act'),
];
?>
हमारे केस में ऐसा होगा कि /test/पैरामीटर1/पैरामीटर2/
तरह के सभी रिक्वेस्ट
act एक्शन पर जाएंगे। इस
दौरान इस एक्शन के पहले पैरामीटर में
पैरामीटर्स के साथ एक एसोसिएटिव ऐरे आएगा:
पहले पैरामीटर की जगह पर जो टेक्स्ट होगा,
वह 'var1' की के साथ ऐरे एलिमेंट में आएगा,
और दूसरे पैरामीटर का टेक्स्ट - 'var2' में आएगा।
मान लीजिए, उदाहरण के लिए, एड्रेस बार में निम्नलिखित
टाइप किया गया है: /test/eee/bbb/। आइए
देखते हैं कि एक्शन के पहले पैरामीटर में
क्या कंटेंट होगा:
<?php
namespace Project\Controllers;
use Core\Controller;
class PageController extends Controller
{
public function act($params)
{
var_dump($params); // ['var1' => 'eee', 'var2' => 'bbb']
}
}
?>
NumController कंट्रोलर बनाएं,
और उसमें - sum एक्शन बनाएं। इस
एक्शन को निम्न प्रकार के एड्रेस को हैंडल करना चाहिए:
/nums/:n1/:n2/:n3/, जहाँ पैरामीटर्स
कुछ नंबर होंगे। ऐसा करें कि
स्क्रीन पर ट्रांसमिट किए गए नंबरों का योग प्रदर्शित हो।