如何从外部PHP文件运行Drupal 8函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从外部PHP文件运行Drupal 8函数相关的知识,希望对你有一定的参考价值。

有没有办法从外部php文件执行Drupal 8函数。

答案

如果你有Drush,你可以运行“drush scr [filename]”来执行文件以及bootstrap Drupal。我做了一篇关于此的博客文章 - https://www.oliverdavi.es/blog/dont-bootstrap-drupal-use-drush

我只将它用于简单的本地测试脚本,但在将代码移动到适当的函数/类/控制器/服务等之前测试一下。

另一答案

您可以在脚本中包含/调用Drupal的引导程序,然后调用Drupal的函数。用于D7,但没有尝试D8。但它应该工作:

https://drupal.stackexchange.com/questions/174474/bootstrap-from-external-script

并从该页面复制代码:

define('DRUPAL_DIR', '/usr/share/nginx/html');
use DrupalCoreDrupalKernel;
use SymfonyComponentHttpFoundationRequest;
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();
另一答案

您可以使用像这样的Devel和Kint模块运行drupal或非drupal的任何php代码。[使用Devel和Kint模块]像这样https://i.stack.imgur.com/RUKv6.png

以上是关于如何从外部PHP文件运行Drupal 8函数的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 8 - 将 Web 表单提交到外部 API

nginx下drupal 8升级update.php/selection 错误

php Drupal 8中构造函数的参数错误太少

php Drupal 8链接,或者我的l()函数在哪里

如何在上传Drupal 8后获取文件名?

php 从Drupal 8节点的分类术语中加载面包屑