বাহ্যিক স্ক্রিপ্ট থেকে বুটস্ট্র্যাপ


10

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

ড্রুপাল 7 এর drupal_bootstrapজন্য প্রয়োজনীয় দ্রুপাল নির্ভরতা লোড করতে হয়েছিল । যাইহোক, দীর্ঘ অনুসন্ধানের পরে আমি ড্রুপাল 8 এর জন্য যা পেয়েছি তা একটি দ্রষ্টব্য যা drupal_bootstrapদ্রুপাল 8 এর জন্য অবমাননিত

এবং প্রকৃতপক্ষে, আমি একটি পেতে

অনির্ধারিত ফাংশনে কল করুন দ্রুপাল_ বুটস্ট্র্যাপ ()

যখন আমি অন্তর্ভুক্ত করার পরে এটি কল করার চেষ্টা করব

define('DRUPAL_ROOT', __DIR__ .'/../drupal');
require_once DRUPAL_ROOT . '/core/vendor/autoload.php';
require_once DRUPAL_ROOT . '/core/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

তাহলে আমি কীভাবে বাইরের স্ক্রিপ্ট থেকে ড্রুপাল 8 এপিআই ব্যবহার করতে পারি ?!


আপনি ড্রাশ পিএইচপি-স্ক্রিপ্ট ব্যবহার করতে পারেন । এটি শেল স্ক্রিপ্ট থেকে সরাসরি একটি সম্পূর্ণ ড্রুপাল বুটস্ট্র্যাপ সহ পিএইচপি কোড চালায়।
rpayanm

উত্তর:


7

ড্রুপাল 8.x এর বর্তমান সংস্করণের জন্য:

define('DRUPAL_DIR', '/usr/share/nginx/html');
use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;
require_once DRUPAL_DIR . '/core/includes/database.inc';
require_once DRUPAL_DIR . '/core/includes/schema.inc';
// Specify relative path to the drupal root.
$autoloader = require_once DRUPAL_DIR . '/autoload.php';

$request = Request::createFromGlobals();

// Bootstrap drupal to different levels
$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod');
$kernel->boot();
$kernel->prepareLegacyRequest($request);

$em = $kernel->getContainer()->get('entity.manager');

$entity = $em->getStorage('node')->create(
        array(
          'type' => "article",
          'title'=> "test entity",
          'body' => "body body body",
        ));

$entity->save();

3

প্রথমত: সর্বদা পরিবর্তন বিজ্ঞপ্তি সন্ধান করুন। আপনি এগুলি এখানে পেতে পারেন: https://www.drupal.org/list-changes

এখানে মূল জিনিসটি এখানে drupal_bootstrap(): https://www.drupal.org/node/2275139

দ্রুপাল 8 এর সামনের নিয়ামক ( index.php) দেখুন।

আপনি কার্নেলের একটি উদাহরণ তৈরি করেন এবং তারপরে এটি অনুরোধগুলি পরিচালনা করতে পারেন।

তবে যেহেতু আপনি কেবল এতে সত্তা সঞ্চার করতে চান, আপনি অনুরোধগুলি পরিচালনা করবেন না। আপনাকে কেবল কার্নেলটি বুটস্ট্র্যাপ করতে হবে এবং তারপরে আপনার সত্তা যুক্ত করতে বিভিন্ন পরিষেবা ব্যবহার করতে হবে। পরিষেবাগুলির তালিকা রয়েছে core/core.services.ymlএবং এটি বেশ বিশাল। আপনি খুঁজছেন হতে পারে entity_manager

এছাড়াও, ডি 8 এর একটি রেস্ট্রুলফুল এপিআই অন্তর্নির্মিত রয়েছে, যাতে আপনি HT8- এ পিং করার সময় আপনি D8 কে সমস্ত কাজ করতে দিতে সক্ষম হতে পারেন।


3

আমি শেষ পর্যন্ত এই কোড দিয়ে শেষ। এটিতে কিছু কুরুচিপূর্ণ অতিরিক্ত অন্তর্ভুক্ত রয়েছে তবে কমপক্ষে এটি কাজ করে:

define('DRUPAL_DIR', __DIR__ .'/../drupal');

use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;

$autoloader = require_once DRUPAL_DIR . '/autoload.php';
$request = Request::createFromGlobals();
$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod');
$kernel->boot();

require_once DRUPAL_DIR . '/core/includes/database.inc';
require_once DRUPAL_DIR . '/core/includes/schema.inc';


$em = $kernel->getContainer()->get('entity.manager');

$entity = $em->getStorage('my_entity')->create(array(
        'id' => "116",
        'name' => "test entity",
));
$entity->save();

আপনার যদি কেবল অটোল্যাড.এফপি প্রয়োজন হয় তবে আপনি এই সমস্ত প্রযোজনীয় কলগুলি ছাড়াই পেতে পারেন:require_once 'your_drupal/autoload.php';
পল-মি

আমার মনে হয় আমার কি দরকার autoload.php(লাইন 4)? এটি যথেষ্ট ছিল যখন আমি ব্যবহার করেছি handleRequestকিন্তু সত্তা পরিচালককে পেতে কেবল বেসিকগুলি বুট করার চেষ্টা করার সময় নয়।
sleidig

আপনার যুক্ত করতে হতে পারেchdir()
প্যারাগ

আবশ্যকতা_অনসেস অপসারণ "অনির্ধারিত ফাংশনকে কল দেয় দ্রুপাল ore কোর \ সত্তা q স্কেল \ দ্রুপাল_স্কেমা_জেট_ফিল্ড_ভ্যালু ()" যা বেশ
লঙ্গা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.