我试图在D8上的同一个模块中调用另一个类中的函数,但代码中有一些错误。我得到了一个错误:未找到类'Drupal\hospitator\TimeTrackerController\TimeTracker‘。
我的主控制器(HospitatorController.php):
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):
我已经两年没有编码,我的记忆有一些漏洞。你能帮帮我吗?告诉你,
发布于 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;。
https://drupal.stackexchange.com/questions/293084
复制相似问题