2016-07-29 51 views
1

我无法让Drupal 8从相同的命名空间加载我的自定义模块的类。这里是我得到的:Drupal 8没有添加我的模块类到注册表/自动加载

<?php 

namespace Drupal\sign_up\Form; 

use Drupal\Core\Form\FormBase; 
use Drupal\Core\Form\FormStateInterface; 
// ... snip ... 

class StandardForm extends CLESignUpForm 
{ 

哪一个在我的本地环境中工作得很好。当部署在服务器说:PHP致命错误:班 '的Drupal \ sign_up \表格\ CLESignUpForm' 不/path/to/drupal/modules/sign_up/src/Form/StandardForm.php找到第21行

如果我添加一行:

include 'CLESignupForm.php';

它工作得很好。但是这打破了自动加载类的目的,不是吗? get_declared_classes()不显示我的基类......或者甚至当前加载的类。

关于如何使这个特定的环境符合任何想法?我已经加载了数据库和配置直接从我的本地设置它的工作。不知何故,它可能是一个PHP/Apache的设置?

+0

为什么不添加'use Drupal \ sign_up \ Form \ CLESignUpForm;'? –

+0

其实我认为这是不必要的,如果他们共享命名空间?那肯定是一个设置的地方? –

+0

如果没有你的帮助,PHP没有办法了解你的'CLESignupForm'类。所以你必须使用'include'语句直接使用'use'语句(首选)来依赖Drupal的[自动加载](https://www.drupal.org/node/2156625)功能。 –

回答

0

原来我是一个关节头。 CLESignUpForm是该类型的不正确的大写。正确的大写是CLESignupForm。仍然不清楚为什么它在其他环境中都能正常工作,而不是这个,但这让我觉得至少有一点理智。

相关问题