আমি কীভাবে হুক_মেনু কলব্যাকের মাধ্যমে জেএসএন ডেটা গ্রাস করব?


9

আমি একটি ড্রুপাল সাইট দিয়ে ট্রপোর ওয়েবএপিআই সেট আপ করার চেষ্টা করছি, এবং আমি ভেবেছিলাম যে আমি উদাহরণস্বরূপ.com/tropo এর জন্য একটি হুক_মেনু () কলব্যাক তৈরি করব, তারপরে ট্রপো থেকে এপিআই কল গ্রহন করতে আমি তৈরি করা হুক_মেনু কলব্যাকটি ব্যবহার করব ( এতে একটি সাধারণ জেএসওন অ্যারের ডেটা রয়েছে), তারপরে সাড়া দিন।

আমি প্রতিক্রিয়া অংশটি খুব সহজেই করতে পারি ... ডেটা তৈরি করুন, ড্রুপাল_জসন_আউটপুট () এবং প্রস্থান করুন (এটি কেবলমাত্র জেএসএনকে মূলত ফেরত দেয়)।

যে অংশটি নিয়ে আমি সমস্যায় পড়ছি তা হ'ল ডেটা পেয়ে যা / ট্রোপো মেনু কলব্যাকে প্রেরণ করা হয় ... আমি নিম্নলিখিত দুটি ব্যবহার করে কোনও ডেটা অ্যাক্সেস করতে পারি না:

$json = file_get_contents("php://input"); // returns NULL

(নীচে ইনপুটস্ট্রিম মডিউলটি ব্যবহার করে :)

$json = file_get_contents("drupal://input"); // also returns NULL

আমি অন্য কিছু মডিউল কী করে তা পরীক্ষা করে দেখেছি এবং দেখে মনে হচ্ছে যে তারা JSON দখল করতে hook_init ব্যবহার করে। এটি কি পছন্দসই পদ্ধতি? আমি এটি হুক_মেনুতে করতে সক্ষম হতে এবং আমার নিজস্ব পথ এবং এই জাতীয় ব্যবহার করতে চাই ...

বিকল্পভাবে, আমি কি আমার নিজের পিএইচপি স্ক্রিপ্টটি লিখে ড্রুপালের বাইরে চালানো ভাল, যদি আমার প্রয়োজন হয় তবে কেবল ডাটাবেসের জন্য একটি বুটস্ট্র্যাপ করা?


মেনু কলব্যাকটি কোন ডেটা পাবে এবং সেই তথ্যগুলি মেনু কলব্যাকের (কোনও বাহ্যিক সার্ভার, বা অন্য কোনও কিছু) কী দিয়ে যাচ্ছে? আপনি কি ডেটা ফর্ম্যাট নিয়ন্ত্রণ করতে পারবেন?
কিমলালুনো

থেকে: php.net/manual/en/wrappers.php.php : "পিএইচপি: // ইনপুট আপনাকে অনুরোধ সংস্থা থেকে কাঁচা তথ্য পড়তে দেয় P পিওএসটি অনুরোধের ক্ষেত্রে, এটি $ HTTP_RAW_POST_DATA এর উপর নির্ভর করে কারণ এটি নির্ভর করে না বিশেষ php.ini নির্দেশিকা। তদুপরি, cases এইচটিটিপি_আরডাব্লু_এসপিডিএলটি ডিফল্টরূপে জনবসতিপূর্ণ নয়, সেই ক্ষেত্রে সর্বদা_পুটুলেট_র_পোস্ট_ডেটা সক্রিয় করার সম্ভাব্য কম মেমরি নিবিড় বিকল্প ph । " এটি কি আপনার সাথে প্রাসঙ্গিক হতে পারে?
বার্ডির

আমি পিএইচপি: // ইনপুট চেষ্টা করেছি, তবে এটি কিছুই পায় না বলে মনে হচ্ছে। যখন আমি ব্যবহার করছি inputstream, Drupal: // ইনপুট রিটার্ন '1' :(
geerlingguy

@ কাইমালালুনো - ট্রপো সার্ভার থেকে ইউআরএল / ট্রপোতে ডেটা পোস্ট করার চেষ্টা করছি; তারা কলারের ফোন নম্বর সম্বলিত কিছু জেএসএন জমা দেয় এবং আমার এটির প্রতিক্রিয়া জানাতে হবে। তবে আমি
জেএসএন

উত্তর:


2

ঠিক আছে, দেখা যাচ্ছে যে আমি ডেটা পাচ্ছিলাম, কিন্তু আমি এটিকে ডিকোড করতে ভুলে গেছি ...

আমার হুক_মেনু কলব্যাকে:

$received = file_get_contents("drupal://input"); // Use inputstream module.
$received = json_decode($received, TRUE);

তারপরে আমি $ প্রাপ্ত মানটির সাথে যতটুকু চাই তার চারপাশে খেলতে পারি।

অতিরিক্ত হিসাবে, ইনপুটস্ট্রিম মডিউলটি আমাকে একবারের বেশি ইনপুট স্ট্রিমে উঠতে দেয়ায় মূল্যবান (যদি আপনি php://inputএকাধিকবার ব্যবহার করার চেষ্টা করেন , দ্বিতীয় বার, এবং যারা অনুসরণ করছেন, NULL ফেরত আসবে)।

অতিরিক্ত নোট হিসাবে, আমি কেবলমাত্র আজই একটি নতুন মডিউল লক্ষ্য করেছি যা এটি পরিচালনা করার আরও সহজ উপায় হতে পারে: জেএসএন হিসাবে সামগ্রী


4
দুই বছর পরে, এবং আমার গুগল অনুসন্ধানগুলি আমাকে পুরো চেনাশোনাতে ফিরিয়ে আনবে।
গেরলিংগুয়ে

এই পরিস্থিতিতে কে অনুরোধ করছে (জেএসএনএস প্রেরণ করছে) তার প্রমাণীকরণটি আপনি কীভাবে পরিচালনা করবেন?
শেলডোনক্রেগার

উপরে উপস্থাপিত সমাধানটির আরও কিছুটা ব্যাখ্যা এখানে দেওয়া হল। wunderkraut.com/blog/…
sheldonkreger

2

আরএসইএস সার্ভার যা পরিষেবাদি মডিউলের অংশ, এটি স্বয়ংক্রিয়ভাবে জেএসএন এবং অন্যান্য ফর্ম্যাটগুলির জন্য করে: http://drupal.org/project/services

এটি ইনপুটস্ট্রিমকেও সমর্থন করে (একই স্ট্রিমের ওআউথ যাচাইকরণ এবং পরিষেবাদি ডিকোডিং উভয়ই হ্যান্ডল করার জন্য ইনপুটস্ট্রিম নির্মিত হয়েছিল)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.