在drupal 8模块中使用外部类,文件名和类名

时间:2017-04-07 22:29:49

标签: drupal-8

我在drupal 8中创建了一个模块。 我想在外部类文件中使用一个类。

文件名:drupal.php

班级名称:班级纽曼{...}

在drupal.php中:

<?php
namespace Drupal\mymodulename\lib;
class newman{
   public function new(){
       $dp = 'TEST';
       return $dp;
   }
}
?>

在我的控制器中:

<?php
namespace Drupal\mymodulename\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\mymodulename\lib\drupal;

class mmController extends ControllerBase {
    public function man() {
          $this->man=new newman();
          $build['test'] = [
                            '#markup' => $man->new(),
                           ];
    }
}

错误:Class&#39; Drupal \ mymodulename \ Controller \ newman&#39;在Drupal中找不到...

我该如何解决?

2 个答案:

答案 0 :(得分:0)

将您的类文件创建为字段插件

moduleName/src/Plugin/Field/FieldFormatter/NewMan.php

文件名和类名应该相同

<?php

namespace Drupal\moduleName\Plugin\Field\FieldFormatter;


class NewMan {
  //class content
}

然后在任何地方使用它

//include file
use Drupal\moduleName\Plugin\Field\FieldFormatter\NewMan;
// use
$newMan =new NewMan();

希望这能解决你的问题 如果这可以解决您的问题,请不要忘记标记为答案 祝你好运

答案 1 :(得分:0)

在drupal.php文件中,该文件应重命名为Newman.php(编码标准),同时在此处删除关闭的PHP标记。

<?php
namespace Drupal\mymodulename\lib;

class Newman {
 public function new(){
   $dp = 'TEST';
   return $dp;
 }
}

在您的控制器中

<?php
namespace Drupal\mymodulename\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\mymodulename\lib\Newman;

class mmController extends ControllerBase {
  public function man() {
    $man = new Newman();

    $build['test'] = [
       '#markup' => $man->new(),
    ];
  }
}