找不到自定义 ViewModel

Custom ViewModel is not found

每当我尝试使用自己的自定义 ViewModel 时,模块就会停止工作。错误:main.CRITICAL: Class Lith\Contacts\ViewModel\AdditionalInfo does not exist [] []

文件结构简单:

- code
  - Lith
    - Contacts
      - etc
      - view
        - frontend
          - layout
          - templates
          - web
      - ViewModel

我在 view\frontend\layout 中创建了一个文件 contact_index_index.xml,我在 referenceContainer 中定义了一个带有静态消息的新 block - 工作正常。但是,当我添加一个参数以传入 ViewModel 时,它会停止使用我的自定义 ViewModel 工作(静态消息不会出现)。如果我传递现有的 Magento ViewModel,注意工作正常。

参数:

<arguments>
    <argument name="view_model" xsi:type="object">Lith\Contacts\ViewModel\AdditionalInfo</argument>
</arguments>

ViewModel class 在 ViewModel 文件夹中创建并称为 AdditionalInfo.php。它的代码:

<?php

namespace Lith\Contacts\ViewModel;

use Magento\Framework\View\Element\Block\ArgumentInterface;

class AdditionalInfo implements ArgumentInterface
{
    public function getMessage(): string
    {
        return 'Addition info text test - from a ViewModel';
    }
}

模板本身不使用 ViewModel - 它只是一个带有字符串文本的静态 div,因此它并不重要。

加载网站时这一切都不起作用。它没有找到 ViewModel。

但每当我将 argument 从上面的更改为:

<arguments>
    <argument
name="view_model"
xsi:type="object"
>Magento\Contact\ViewModel\UserDataProvider</argument>
</arguments>

然后它工作正常。

如果我删除 <argument name="view_model" xsi:type="object">Lith\Contacts\ViewModel\AdditionalInfo</argument>,因为现在不使用模板中的 ViewModel,它在呈现文本时也能正常工作。

为什么找不到我的自定义 ViewModel?我做错了什么?

编辑:如果需要任何其他信息,这里是文件的 public 存储库 https://bitbucket.org/Edvbar/magento2/src/master/

您在 Bitbucket 上的 Lith_Contacts 模块已添加到文件夹 app/design/code/Lith/Contacts。但是这个不应该放在design文件夹里。

请将模块移动到app/code/Lith/Contacts。然后 运行 php bin/magento setup:upgrade 从命令行启用模块。