দ্রুপালের ভিতরে আমি কীভাবে এজেএক্স অনুরোধ সনাক্ত করতে পারি?


18

আমি এজেএক্স অনুরোধ সনাক্ত করার জন্য ড্রুপাল উপায়টি খুঁজছি। আমার এটি হুক_ফর্ম_ল্টারের ভিতরে পরীক্ষা করতে হবে (এজেএক্স সমর্থন সহ এম্বেডিং ভিউ)


এটি সাহায্য করতে পারে: drupal.stackexchange.com/questions/86939/…
শশী কাঁথ

উত্তর:


28

ড্রুপাল 7 এর জন্য এপিআইতে বিশেষ কিছু নেই, কেবল সরল পিএইচপি ব্যবহার করুন:

if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  // AJAX request
}

ড্রুপাল 8 এর জন্য, সিমফোনির অনুরোধ অবজেক্টটির একটি সহায়ক পদ্ধতি রয়েছে:

// Example for brevity only, inject the request_stack service and call 
// getCurrentRequest() on it to get the request object if possible.
$request = \Drupal::request();
$is_ajax = $request->isXmlHttpRequest();

আমি অনুরোধটি চিত্র আপলোড বোতাম থেকে আসছে কিনা তা খতিয়ে দেখার চেষ্টা করছি। 'HTTP_X_REQUESTED_WITH' $ সার্ভার অ্যারেতে বিদ্যমান নেই। কোন ধারনা?
মৌনির

সময় বাঁচানো !! অনেক প্রশংসিত !!
জয়কান্দারি

ধন্যবাদ, @ ক্লাইভ!
aserww106

9

পাথটিতে "আজাক্স" শব্দটি রয়েছে কিনা তা পরীক্ষা করার জন্য আপনি আপনার হুকটিতে কারেন্ট_পথ () ব্যবহার করার বিষয়টি বিবেচনা করতে পারেন।

উদা:

$current_path = current_path();
if (strpos($current_path, 'ajax') !== false) {
    echo 'AJAX request detected!';
    exit;
}

3
95% কাজ হতে পারে তবে মনে হয় এটির কোনও নিশ্চয়তা নেই। প্রথমত এটি কেবল কনভেনশনই নয় যে স্ট্রিং 'এজাক্স' অ্যাজাক্স অনুরোধের পথের অংশ? যে কোনও অবদানের মডিউল তার পছন্দমত যে কোনও পথ নিবন্ধ করতে পারে। দ্বিতীয়ত, একটি অজ্যাক্স পথটি 'এজাক্স' স্ট্রিংটি ধারণ করতে পারে না? উদাহরণস্বরূপ কোনও ভিউ বা প্যানেল পৃষ্ঠার জন্য 'মায়াজ্যাক্সপেজ'-এ পথ নির্ধারণ করতে পারে?
অ্যাডামস

0

যেহেতু এজেএক্স অনুরোধটি পরীক্ষা করার কোনও বুলেট-প্রুফ পদ্ধতি নেই (যেমন HTTP_X_REQUESTED_WITHছদ্মবেশী হতে পারে), ইউআরএল ভিত্তিক এখানে অন্য একটি বিকল্প রয়েছে:

if (end((arg())) == 'ajax') {
  // AJAX request
}

দেখার জন্য কাজ করে (যখন সর্বশেষ ইউআরআই আইটেমটিতে 'এজাক্স' শব্দ থাকে))

আরও দেখুন: অনুরোধটি পিএইচপি-র সাথে একটি এজেএক্স অনুরোধ কিনা তা কীভাবে পরীক্ষা করবেন?


আমি মনে করি ফাইল / অজ্যাক্স এবং মিডিয়া / এজ্যাক্সের ক্ষেত্রে ইউআরএলে অতিরিক্ত পরামিতি হওয়ার সম্ভাবনা রয়েছে, তাই এজ্যাক্স শেষের দিকে থাকবে না। যেমন / ফাইল / Ajax / field_user_picture / আন্ড / 0 / ফর্ম-XXXXXXXXXXXXXXXXXXXXXXXXXX
Adams

0

দ্রুপালে ফর্ম নিয়ে কাজ করার সুযোগে এজেএক্স অনুরোধটির অর্থ এই হবে যে ফর্মটি অবশ্যই পুনর্নির্মাণ করতে হবে। সেই ফর্মটি সনাক্ত করতে অবশ্যই পুনরায় বিল্ডিং করা উচিত:

$form_state['rebuild'] == TRUE;

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