如何将我的扩展字段公开给 API?
How do I expose my extended field to the API?
我已经开始使用 OroCommerce,并想尝试扩展本机 OroCommerce 实体以向其添加字段。
出于测试目的,我尝试将“testField”字段添加到产品实体。
所以我按照文档创建了一个迁移 class,并且工作正常:
class ExtendNativeMigration implements Migration
{
public function up(Schema $schema, QueryBag $queries)
{
$table = $schema->getTable("oro_product");
$table->addColumn('testField', "string", [
"oro_options" => [
"extend" => ["owner" => ExtendScope::OWNER_CUSTOM]
]
]);
}
}
我现在在 oro_product table 中有一个“testField”列。
我面临的问题是我似乎无法将新创建的字段公开给 API。
我在我的包中创建了 api.yml 文件,并尝试了这样的操作:
api:
entities:
Oro\Bundle\ProductBundle\Entity\Product:
fields:
testField:
exclude: false
但是当我调用产品时该字段没有出现API。我尝试了 api.yml 文件中的其他内容,但无济于事。
当我转储 API 配置时该字段出现,但它只是显示“null”:
...
exclusion_policy: all
fields:
testField: null
skuUppercase:
exclude: true
...
我可能在这里做错了什么,但我不确定是什么。
我能得到一些关于如何正确执行此操作的指示吗?谢谢!
你的代码绝对没问题。我已经在本地检查过了,该字段添加到 API 没有任何问题。
确保在更新 API YAML 配置后有 运行 php bin/console oro:api:cache:clear -eprod
命令。
此外,如果您正在使用店面 API,您应该使用 api_frontend.yml
而不是 api.yml 文件。
我已经开始使用 OroCommerce,并想尝试扩展本机 OroCommerce 实体以向其添加字段。
出于测试目的,我尝试将“testField”字段添加到产品实体。
所以我按照文档创建了一个迁移 class,并且工作正常:
class ExtendNativeMigration implements Migration
{
public function up(Schema $schema, QueryBag $queries)
{
$table = $schema->getTable("oro_product");
$table->addColumn('testField', "string", [
"oro_options" => [
"extend" => ["owner" => ExtendScope::OWNER_CUSTOM]
]
]);
}
}
我现在在 oro_product table 中有一个“testField”列。
我面临的问题是我似乎无法将新创建的字段公开给 API。
我在我的包中创建了 api.yml 文件,并尝试了这样的操作:
api:
entities:
Oro\Bundle\ProductBundle\Entity\Product:
fields:
testField:
exclude: false
但是当我调用产品时该字段没有出现API。我尝试了 api.yml 文件中的其他内容,但无济于事。
当我转储 API 配置时该字段出现,但它只是显示“null”:
...
exclusion_policy: all
fields:
testField: null
skuUppercase:
exclude: true
...
我可能在这里做错了什么,但我不确定是什么。
我能得到一些关于如何正确执行此操作的指示吗?谢谢!
你的代码绝对没问题。我已经在本地检查过了,该字段添加到 API 没有任何问题。
确保在更新 API YAML 配置后有 运行
php bin/console oro:api:cache:clear -eprod
命令。此外,如果您正在使用店面 API,您应该使用
api_frontend.yml
而不是 api.yml 文件。