আমি কীভাবে ড্রুপাল ব্যবহার করে আসল জেএসএন ফিরিয়ে দিতে পারি?


13

আমি স্থানীয়ভাবে একটি সাধারণ AJAX ফাংশন বাস্তবায়ন করতে চাই যা আমাকে ইতিমধ্যে বিদ্যমান নোডগুলির নোডের শিরোনামটি ব্যবহারকারী ধরণ হিসাবে স্বতঃপূরণ করতে দেয়। সে লক্ষ্যে, আমার কাছে এমন একটি এপিআই রাখার সক্ষমতা প্রয়োজন যা আমি নোড শিরোনামগুলিতে অনুসন্ধান করতে পারি। সমস্যাটি হ'ল আমি যখন কাঁচা JSON আউটপুট করি তখন তা ট্যাগ দিয়ে ঘিরে আসে। সুতরাং, আমি যাই করি না কেন, আমি পেতে থাকি ...

<html>
    <head>
    </head>
    <body>
        <pre style="word-wrap: break-word; white-space: pre-wrap;"> {json here}</pre>
    </body>
</html>

আমি একটি কাস্টম পৃষ্ঠার টেম্পলেট প্রয়োগ করার চেষ্টা করেছি যা ইতিমধ্যে কেবল একই সামগ্রীর ফলাফলকে আউটপুট করে, যা একই ফলাফল তৈরি করে। আমার মডিউল ফাইলে আমি বর্তমানে এটি কীভাবে করছি তা এখানে ...

<?php

/**
 * Implementation of hook_menu()
 */
function content_relation_menu() {
    $items = array();
    $items['api'] = array(
        'title' => 'Search',
        'page callback' => 'content_relation_get',
        'access callback' => TRUE,
        'type' => MENU_CALLBACK,
    );

    return $items;
}

function content_relation_get($term = '') {
    drupal_add_http_header('Content-Type', 'application/javascript; utf-8');
    $var = json_encode(
        db_query("SELECT nid,title FROM {node} WHERE title LIKE :title LIMIT 5", array(":title" => $term.'%'))->fetchAll()
    );
    echo $var;
    exit(0);
}

আমি কীভাবে JUST কাঁচা JSON ফিরিয়ে দিতে পারি?


আপনি drupal_json_outputফাংশন চান । কাজের উদাহরণের জন্য এখানে বা সেখানে দেখুন ।
কিথম

উত্তর:


17

ড্রুপাল 6 এর জন্য, আপনি দ্রুপাল_জসন ব্যবহার করতে পারেন

function content_relation_get($term = '') {
    $result = db_query("SELECT nid,title FROM {node} WHERE title LIKE :title LIMIT 5", array(":title" => $term.'%'))->fetchAll()
    );
    drupal_json($result);
    exit;
}

ড্রুপাল 7 এর জন্য, ড্রুপাল_জসন_আউটপুট ব্যবহার করতে এটি পরিবর্তন করুন

function content_relation_get($term = '') {
    $result = db_query("SELECT nid,title FROM {node} WHERE title LIKE :title LIMIT 5", array(":title" => $term.'%'))->fetchAll()
    );
    drupal_json_output($result);
    drupal_exit();
}

কেবল ফলাফলটি ফেরত দেওয়ার চেষ্টা না করে স্যানিটাইজ, ত্রুটি পরীক্ষা করা ইত্যাদির জন্য কোয়েরিটি পার্স করা সম্ভবত নিরাপদ হবে।


2
কেবলমাত্র একটি দ্রষ্টব্য নোট: JSON প্রিন্ট করার পরে প্রস্থান () এর পরিবর্তে drupal_exit () ব্যবহার করা সাধারণত ভাল।
geerlingguy

2
পছন্দ করুন এটা খেয়াল করেনি যারা পার্থক্য জানেন না তাদের জন্য, ড্রপাল_এক্সিট () কল করা হুক_েক্সিট (), অধিবেশন ইত্যাদি
ছড়িয়ে দেবে

3

আমি দেখেছি ড্রুপাল 8 এর জন্য কোনও উত্তর সরবরাহ করা হয়নি।

ড্রুপাল 8 এ জেএসএন প্রক্রিয়াকরণের জন্য, নিম্নলিখিত কোডটি ব্যবহার করুন:

  <?php
     use Symfony\Component\HttpFoundation\JsonResponse;
     // ...
     $options = _menu_get_options(menu_get_menus(), $available_menus, array('mlid' => 0));
     return new JsonResponse($options);
  ?>

আপনি এটি সম্পর্কে এখানে আরও পড়তে পারেন


1

ড্রুপাল 8 এর জন্য এখানে একটি বাস্তব জীবনের উদাহরণ

https://github.com/npinos/drupal8-greenhouse

নিয়ামক এবং রাউটিং অন্তর্ভুক্ত

এই কোডটি একটি শেষ পয়েন্ট হিসাবে প্রকাশিত জসন ফর্ম্যাটে একটি নোড গণনা প্রদান করে

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