我开始在 Magento2 中实施新模块,从那时起我有更多的问题而不是答案。
我成功创建了自己的模块,它似乎正在工作,但不是真的。我正在使用自己的控制器,并希望使用一些外部(非本地)JS / CSS文件来实现我自己的布局。
我首先坚持的是向页面添加一些外部JS / CSS 。事情并不像我想象的那么容易。我已经阅读了很多关于它如何完成的文章,但它们都没有为我工作。我不想改变任何主题,我只想使用我的自定义页面(可能没有主题)。
此外,我在我的模块HelloWorld
中创建了另一个操作(与工作app/code/MyModule/Product/Controller/Api/Index.php
示例相同),它扩展了右类等等,但是再次 - not工作。我收到的是下一个错误:
可恢复错误:参数1 传递给... \ Api \ AbstractApiAction :: __ construct()必须是 Magento \ Framework \ App \ Action \ <的实例strong>上下文,Magento \ Framework \ ObjectManager \ ObjectManager给出的实例,在第97行的vendor / magento / framework / ObjectManager / Factory / AbstractFactory.php中调用,并在app / code中定义第24行的/.../Api/AbstractApiAction.php
当我发现除非我使用bin/magento setup:di:compile
重新编译DI容器之外它不起作用,我感到很惊讶。我认为不值得说这个过程需要一些时间。当我创造新动作时,我应该去setup:di:compile
以便能够进一步发展。
我完全禁用了管理区域中的缓存。
现在我想澄清几个问题:
Developer mode
在Magento2中意味着什么,我记得它禁用了缓存等,但代码库没有自动重新生成,或者我错过了smth。再次?答案 0 :(得分:3)
对于di编译,在开发人员模式下不需要运行此命令。如果有var / di目录magento将从中读取配置,但您可以安全地删除它并且它将正常工作,只是稍微慢一点,因为需要从文件中读取所有di首选项。您看到的错误是由于magento生成拦截器类以允许使用插件。这些类是在var / generation中创建的,包含自动加载器的di构造函数信息。当您更改在先前请求中生成的类的构造函数时,它将会中断。如果您将来看到这样的错误,只需删除var / cache,var / generation和var / di(如果存在)并刷新页面。