Php 找不到TYPO3控制器类。我在哪里链接它?
我正在为TYPO3 v9.5.9开发一个扩展,并且已经编写了我的所有代码,但是当我尝试使用该扩展时,我收到一条错误消息说 类Secsign\Secsign\Controller\SecsignController不存在。 反射失败Php 找不到TYPO3控制器类。我在哪里链接它?,php,typo3,typo3-9.x,typo3-extensions,Php,Typo3,Typo3 9.x,Typo3 Extensions,我正在为TYPO3 v9.5.9开发一个扩展,并且已经编写了我的所有代码,但是当我尝试使用该扩展时,我收到一条错误消息说 类Secsign\Secsign\Controller\SecsignController不存在。 反射失败 有两种方法可以解决此问题: 1.通过project composer.json加载扩展 为您的自定义扩展创建一个文件夹,我在这里将其命名为Extensions,并将您的所有自定义扩展移动到此文件夹中。您的public/typo3conf/ext/文件夹现在应该只保存
有两种方法可以解决此问题: 1.通过project composer.json加载扩展 为您的自定义扩展创建一个文件夹,我在这里将其命名为
Extensions
,并将您的所有自定义扩展移动到此文件夹中。您的public/typo3conf/ext/
文件夹现在应该只保存composer加载的扩展,并且可以随时清除,因为一个简单的composer i
将带回所有扩展
└── projectRoot
├── Extensions
│ └── secsign
│ └── Classes
├── composer.json
└── public
└── typo3conf
└── ext
└── secsign(symlink_by_composer)
将其添加到项目生成器中。json:
"repositories": {
"0": {
"type": "composer",
"url": "https://composer.typo3.org/"
},
"1": {
"type": "path",
"url": "./Extensions/*",
"options": {
"symlink": true
}
}
},
...
"require": {
"secsign/secsign": "*",
...
},
"autoload": {
"psr-4": {
"Secsign\\Secsign\\": "Classes/"
}
},
删除Extensions composer.json中自动加载的第二行
public/Extensions/secsign/composer.json:
"repositories": {
"0": {
"type": "composer",
"url": "https://composer.typo3.org/"
},
"1": {
"type": "path",
"url": "./Extensions/*",
"options": {
"symlink": true
}
}
},
...
"require": {
"secsign/secsign": "*",
...
},
"autoload": {
"psr-4": {
"Secsign\\Secsign\\": "Classes/"
}
},
现在,composer加载您的项目composer.json,找到您的扩展,将其符号链接到typo3conf/ext/并读取您的扩展composer.json并执行它
将所有Ext加载到项目中:完成所有这些更改后,只需执行编写器更新
。这将把您的所有第三方扩展加载到projectRoot/public/typo3conf/ext/
中,并将您的自定义扩展从secsign->../../../extensions/secsign
添加更多自定义扩展:只需将自定义扩展添加到扩展
,确保它具有有效的composer.json
,并将其包含在
composer-req-secsign/one-more-ext
2.将类添加到project composer.json中
将扩展留在原处,不必关心扩展composer.json和
只需将类添加到project composer.json:
"autoload": {
"psr-4": {
"Secsign\\Secsign\\": "htdocs/typo3conf/ext/secsign/Classes/"
}
},
现在composer会自动从projects composer.json加载类,扩展composer.json甚至不会执行
最终的
有两种方法可以解决此问题: 1.通过project composer.json加载扩展 为您的自定义扩展创建一个文件夹,我在这里将其命名为
Extensions
,并将您的所有自定义扩展移动到此文件夹中。您的public/typo3conf/ext/
文件夹现在应该只保存composer加载的扩展,并且可以随时清除,因为一个简单的composer i
将带回所有扩展
└── projectRoot
├── Extensions
│ └── secsign
│ └── Classes
├── composer.json
└── public
└── typo3conf
└── ext
└── secsign(symlink_by_composer)
将其添加到项目生成器中。json:
"repositories": {
"0": {
"type": "composer",
"url": "https://composer.typo3.org/"
},
"1": {
"type": "path",
"url": "./Extensions/*",
"options": {
"symlink": true
}
}
},
...
"require": {
"secsign/secsign": "*",
...
},
"autoload": {
"psr-4": {
"Secsign\\Secsign\\": "Classes/"
}
},
删除Extensions composer.json中自动加载的第二行
public/Extensions/secsign/composer.json:
"repositories": {
"0": {
"type": "composer",
"url": "https://composer.typo3.org/"
},
"1": {
"type": "path",
"url": "./Extensions/*",
"options": {
"symlink": true
}
}
},
...
"require": {
"secsign/secsign": "*",
...
},
"autoload": {
"psr-4": {
"Secsign\\Secsign\\": "Classes/"
}
},
现在,composer加载您的项目composer.json,找到您的扩展,将其符号链接到typo3conf/ext/并读取您的扩展composer.json并执行它
将所有Ext加载到项目中:完成所有这些更改后,只需执行编写器更新
。这将把您的所有第三方扩展加载到projectRoot/public/typo3conf/ext/
中,并将您的自定义扩展从secsign->../../../extensions/secsign
添加更多自定义扩展:只需将自定义扩展添加到扩展
,确保它具有有效的composer.json
,并将其包含在
composer-req-secsign/one-more-ext
2.将类添加到project composer.json中
将扩展留在原处,不必关心扩展composer.json和
只需将类添加到project composer.json:
"autoload": {
"psr-4": {
"Secsign\\Secsign\\": "htdocs/typo3conf/ext/secsign/Classes/"
}
},
现在composer会自动从projects composer.json加载类,扩展composer.json甚至不会执行
最终的
你试过刷新系统缓存和重建PHP自动加载信息吗?是的,我已经试过多次了。运气不好。请尝试从命名空间中删除反斜杠。请参阅@jokumer的答案1)不建议使用带有前导反斜杠的
use
语句(但无论如何都应该有效)2)你的composer.json看起来怎么样?@GhanshyamBhava我会在我拥有的每一个类中都这样做吗?你是否尝试过刷新系统缓存和重建PHP自动加载信息?是的,我已经尝试过多次了。运气不好。请尝试从命名空间中删除反斜杠。请参阅@jokumer的答案1)不建议使用带有前导反斜杠的use
语句(但无论如何应该可以使用)2)你的composer.json是什么样子的?@GhanshyamBhava在我拥有的每个类中我都必须这样做吗?目前,我的projects composer.json的存储库部分看起来是这样的:`“存储库”:[{“类型”:“编写器”,“url”:“}],`我将如何添加您提到的repositories语句?我似乎无法理解。完成后,如何将扩展加载到TYPO3?@droemmelbert我将TYPO3.org repo添加到上面的示例中。此外,我还向1添加了一个步骤。我实际上是这样做的。通过composer.json加载它成功了。谢谢!此时repomy projects composer.json的sitories部分如下所示:`“存储库”:[{“类型”:“composer”,“url”:“}],`我将如何添加您提到的repositories语句?我似乎无法理解。完成后,如何将扩展加载到TYPO3?@droemmelbert我将TYPO3.org repo添加到上面的示例中。此外,我还向1添加了一个步骤。我确实做到了。通过composer.json加载它成功了。谢谢!