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

时间:2018-05-09 17:44:59

标签: drupal drupal-8

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

并从该页面复制代码:

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();

答案 2 :(得分:0)

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