首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用方法形成自定义模块类

问调用方法形成自定义模块类
EN

Drupal用户
提问于 2020-04-23 17:10:43
回答 1查看 615关注 0票数 -3

我试图在D8上的同一个模块中调用另一个类中的函数,但代码中有一些错误。我得到了一个错误:未找到类'Drupal\hospitator\TimeTrackerController\TimeTracker‘。

我的主控制器(HospitatorController.php):

代码语言:javascript
复制
namespace Drupal\hospitator\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\hospitator\TimeTrackerController\TimeTracker;

/**
 * Class HospitatorController.
 */
class HospitatorController extends ControllerBase {

  /**
   * Main Page Function.
   *
   * @return array
   *   Return main page.
   */
  public function mainPage() {
    $element = array(
        '#type' => 'markup',
        '#markup' => $this->t('Welcome to Hospitator!') . '
',
    );
    $test_controller = new TimeTracker;
    $test_text = $test_controller->start();

    return $element;
  }

}

我的中学(TimeTracker.php):

代码语言:javascript
复制

我已经两年没有编码,我的记忆有一些漏洞。你能帮帮我吗?告诉你,

EN

回答 1

Drupal用户

回答已采纳

发布于 2020-04-24 09:10:38

由于Drupal 8在名称空间文档页,模块部分中支持PSR-4命名空间,正如Drupal编码标准中所描述的那样,命名空间和目录结构之间必须有对应关系。这意味着,如果Drupal\ means \TimeTrackerController是命名空间,那么类文件必须放置在医院/src/TimeTrackerController文件夹中。此外,如果TimeTracker是类名,那么包含其代码的文件必须命名为TimeTracker.php。我想住院医师是这个模块的机器名。如果机器名称不同,则必须从模块机器名称、命名空间和文件夹名称中替换医院人员。

如果包含类代码的文件位于医院/src/Controller/TimeTracker.php中,则正确的命名空间是Drupal\hospitator\Controller,而不是Drupal\hospitator\TimeTrackerController。当在使用另一个命名空间的文件中引用该类时,可以在该文件的顶部添加use Drupal\hospitator\Controller\TimeTracker;,而不是use Drupal\hospitator\TimeTrackerController\TimeTracker;。

另外,如果HospitatorController类和TimeTracker类使用相同的命名空间,我假设它们是Drupal\hospitator\Controller,则不需要在包含HospitatorController类的文件的顶部添加use Drupal\hospitator\Controller\TimeTracker;。

票数 1
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/293084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档