আমি কীভাবে zf2 এ পৃষ্ঠার অনুরোধের সাথে সম্পর্কিত বিভিন্ন পরামিতি পেতে পারি? পোস্ট / প্যারামিটারগুলির মতো, রুটটি অ্যাক্সেস করা হচ্ছে, শিরোনাম প্রেরণ করা হয়েছে এবং ফাইল আপলোড করা হয়েছে।
আমি কীভাবে zf2 এ পৃষ্ঠার অনুরোধের সাথে সম্পর্কিত বিভিন্ন পরামিতি পেতে পারি? পোস্ট / প্যারামিটারগুলির মতো, রুটটি অ্যাক্সেস করা হচ্ছে, শিরোনাম প্রেরণ করা হয়েছে এবং ফাইল আপলোড করা হয়েছে।
উত্তর:
এটি করার সহজতম উপায় হ'ল বিটা 5-এ প্রবর্তিত প্যারাম প্লাগইন ব্যবহার করা । বিভিন্ন ধরণের পরামিতিগুলিতে অ্যাক্সেস করা সহজ করার জন্য এর ইউটিলিটি পদ্ধতি রয়েছে। সর্বদা হিসাবে, পরীক্ষা পড়া কিছু কীভাবে ব্যবহৃত হওয়ার কথা তা বোঝার জন্য মূল্যবান প্রমাণ করতে পারে।
নিয়ামক হিসাবে একটি নামকৃত প্যারামিটারের মান পেতে আপনার যে ধরণের প্যারামিটারটি সন্ধান করছেন তার জন্য উপযুক্ত পদ্ধতি নির্বাচন করতে হবে এবং নামটি পাস করতে হবে।
$this->params()->fromPost('paramname'); // From POST
$this->params()->fromQuery('paramname'); // From GET
$this->params()->fromRoute('paramname'); // From RouteMatch
$this->params()->fromHeader('paramname'); // From header
$this->params()->fromFiles('paramname'); // From file being uploaded
এই সমস্ত পদ্ধতিতে ডিফল্ট মানগুলিও সমর্থন করে যা প্রদত্ত নামের সাথে কোনও প্যারামিটার পাওয়া না গেলে ফিরে আসবে।
$orderBy = $this->params()->fromQuery('orderby', 'name');
পরিদর্শন কালে http://example.com/?orderby=birthdate ,
$ orderBy মান থাকবে জন্মতারিখ ।
পরিদর্শন কালে http://example.com/ ,
$ orderBy থাকবে ডিফল্ট মান নাম ।
এক ধরণের সমস্ত পরামিতি পেতে, কোনও কিছুতেই পাস করবেন না এবং প্যারাম প্লাগইন তাদের নামগুলির সাথে কী হিসাবে মানগুলির একটি অ্যারে ফিরিয়ে দেবে।
$allGetValues = $this->params()->fromQuery(); // empty method call
Http://example.com/?orderby=birthdate&filter=hasphone visiting সমস্ত গেটভ্যালুগুলি দেখার মতো একটি অ্যারে হবে
array(
'orderby' => 'birthdate',
'filter' => 'hasphone',
);
যদি আপনি সোর্স কোডটি পরীক্ষা করেন প্যারাম প্লাগইনের জন্য দেখতে পাবেন যে এটি আরও নিয়মিত প্যারামিটার পুনরুদ্ধারের জন্য অনুমতি দেওয়ার জন্য অন্যান্য নিয়ন্ত্রকদের কাছাকাছি কেবল একটি পাতলা মোড়ক। যদি আপনি কোনও কারণে সরাসরি এগুলি অ্যাক্সেস করতে চান / প্রয়োজন থাকেন তবে এটি কীভাবে হয়েছে তা আপনি সোর্স কোডটিতে দেখতে পারেন।
$this->getRequest()->getRequest('name', 'default');
$this->getEvent()->getRouteMatch()->getParam('name', 'default');
দ্রষ্টব্য: আপনি সুপারগ্লোবালগুলি $ _গেট, $ _POST ইত্যাদি ব্যবহার করতে পারতেন তবে তা নিরুত্সাহিত।
পোস্ট করা জসন স্ট্রিংয়ের সহজতম উপায়, উদাহরণস্বরূপ, 'পিএইচপি: // ইনপুট' এর সামগ্রীগুলি পড়া এবং তারপরে এটি ডিকোড করা। উদাহরণস্বরূপ আমার একটি সাধারণ জেন্ড রুট ছিল:
'save-json' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/save-json/',
'defaults' => array(
'controller' => 'CDB\Controller\Index',
'action' => 'save-json',
),
),
),
এবং আমি অ্যাংুলারের $ http.post ব্যবহার করে এটিতে ডেটা পোস্ট করতে চেয়েছিলাম। পোস্টটি ঠিক ছিল তবে জেন্ডে পুনরুদ্ধার পদ্ধতি
$this->params()->fromPost('paramname');
এক্ষেত্রে কিছুই পেল না। সুতরাং আমার সমাধানটি ছিল, 'পিএইচপি: //' থেকে পড়ার জন্য kinds _POST এবং উপরে বর্ণিত অন্যান্য পদ্ধতিগুলির মতো সমস্ত ধরণের পদ্ধতির চেষ্টা করার পরে:
$content = file_get_contents('php://input');
print_r(json_decode($content));
আমি শেষ পর্যন্ত আমার জসন অ্যারে পেয়েছি। আশাকরি এটা সাহায্য করবে.
$content = $this->getRequest()->getContent()
?name=mike
?
require_once 'lib/Zend/Loader/StandardAutoloader.php';
$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
$loader->registerNamespace('Http\PhpEnvironment', 'lib/Zend/Http');
// Register with spl_autoload:
$loader->register();
$a = new Zend\Http\PhpEnvironment\Request();
print_r($a->getQuery()->get()); exit;
উপরের সমস্ত পদ্ধতি সূক্ষ্মভাবে কাজ করবে যদি আপনার বিষয়বস্তুর ধরণটি "অ্যাপ্লিকেশন / -www-ফর্ম-urlencoded" হয়। তবে যদি আপনার বিষয়বস্তুর ধরণটি "অ্যাপ্লিকেশন / জসন" হয় তবে আপনাকে নিম্নলিখিতগুলি করতে হবে:
ms প্যারামগুলি = json_decode (ফাইল_জেট_কন্টেন্টস ('পিএইচপি: // ইনপুট'), সত্য); মুদ্রণ_আর (ms প্যারাম);
কারণ: https://www.toptal.com/php/10-most-common-mistakes-php-programmers-make এ # 7 দেখুন
নিয়ামকের বাইরে উদাহরণস্বরূপ আপনার যদি প্লাগইনে অ্যাক্সেস না থাকে তবে আপনি সার্ভিসেকোলেটরের কাছ থেকে এই জাতীয় প্যারাম পেতে পারেন
//from POST
$foo = $this->serviceLocator->get('request')->getPost('foo');
//from GET
$foo = $this->serviceLocator->get('request')->getQuery()->foo;
//from route
$foo = $this->serviceLocator->get('application')->getMvcEvent()->getRouteMatch()->getParam('foo');
$this->params('key', 'default')