Php Magento2:定制模块开发和DI

Php Magento2:定制模块开发和DI,php,dependency-injection,magento2,Php,Dependency Injection,Magento2,我开始在Magento2中实现新模块,从那时起,我的问题多于答案 我成功地创建了我自己的模块,它似乎在工作,但不是真的。我正在使用自己的控制器,并希望实现自己的布局,使用一些外部而非本地JS/CSS文件 我首先坚持的是向页面添加一些外部JS/CSS。事情并不像我想的那么容易。我读过很多关于如何做到这一点的文章,但没有一篇对我有用。我不想改变任何主题,我只想使用我的自定义页面,可能根本没有主题 此外,我在模块app/code/MyModule/Product/Controller/Api/Inde

我开始在Magento2中实现新模块,从那时起,我的问题多于答案

我成功地创建了我自己的模块,它似乎在工作,但不是真的。我正在使用自己的控制器,并希望实现自己的布局,使用一些外部而非本地JS/CSS文件

我首先坚持的是向页面添加一些外部JS/CSS。事情并不像我想的那么容易。我读过很多关于如何做到这一点的文章,但没有一篇对我有用。我不想改变任何主题,我只想使用我的自定义页面,可能根本没有主题

此外,我在模块app/code/MyModule/Product/Controller/Api/Index.php中创建了另一个与使用HelloWorld示例相同的操作,该操作扩展了正确的类等,但同样不起作用。我收到的是下一个错误:

可恢复错误:传递给…\Api\AbstractApiAction::\uu构造必须是Magento\Framework\App\Action\Context的实例,给定Magento\Framework\ObjectManager\ObjectManager的实例,在第97行的vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php中调用,并在第24行的app/code/../Api/AbstractApiAction.php中定义

当我发现除非我用bin/magento setup:DI:compile重新编译DI容器,否则它将无法工作时,我感到惊讶的是什么。我认为不值得说这个过程需要一点时间。当我创建新动作时,我应该去做setup:di:compile,以便能够进一步开发它

我完全禁用了管理区域中的缓存

现在我想澄清几个问题:

如何将外部JS/CSS文件添加到自定义控制器的自定义页面。 有没有办法发展smth。没有不断地重新编译DI容器?还是我错过了smth。? 根据上面的问题,“开发者模式”在Magento2中的真正含义是什么?我记得它禁用了缓存等功能,但代码库不是自动重新生成的,或者我缺少smth。再一次
至于di编译,在开发人员模式下不需要运行此命令。如果存在var/di目录,magento将从中读取配置,但您可以安全地删除它,它将正常工作,只是速度稍慢,因为所有di首选项都需要从文件中读取。您看到的错误是由于magento生成拦截器类以允许使用插件。这些类是在var/generation中创建的,包含自动加载程序的di构造函数信息。当您更改在上一个请求中生成的类的构造函数时,它将中断。如果将来看到这样的错误,只需删除var/cache、var/generation和var/di(如果存在)并刷新页面即可