The old "sw-button" component will be removed in the next major version. Please use the new "mt-button" component instead.
We will provide you with a codemod (ESLint rule) to automatically convert your codebase to use the new "mt-button" component.
If you don't want to use the codemod, you can manually replace all occurrences of "sw-button" with "mt-button".
Following changes are necessary:
Replace all component names from "sw-button" with "mt-button"
Before:
<sw-button>Save</sw-button>
After:
<mt-button>Save</mt-button>
Remove the property "variant". Use the property "ghost" instead.
Before:
<sw-button variant="ghost">Save</sw-button>
After:
<mt-button ghost>Save</mt-button>
Replace the value "danger" with "critical" in the property "variant".
Before:
<sw-button variant="danger">Delete</sw-button>
After:
<mt-button variant="critical">Delete</mt-button>
Replace the value "ghost-danger" with "critical" in the property "variant". Add the property "ghost".
Before:
<sw-button variant="ghost-danger">Delete</sw-button>
After:
<mt-button variant="critical" ghost>Delete</mt-button>
Remove the value "contrast" from the property "variant". There is no replacement.
Remove the value "context" from the property "variant". There is no replacement.
Replace the property "router-link" with a "@click" event listener and a "this.$router.push()" method.
Before:
<sw-button router-link="sw.example.route">Go to example</sw-button>
After:
<mt-button @click="this.$router.push('sw.example.route')">Go to example</mt-button>
- Removed service
Shopware\Core\Content\MailTemplate\Service\AttachmentLoader
without replacement. - Removed event
Shopware\Core\Content\MailTemplate\Service\Event\AttachmentLoaderCriteriaEvent
without replacement.
The old "sw-icon" component will be removed in the next major version. Please use the new "mt-icon" component instead.
We will provide you with a codemod (ESLint rule) to automatically convert your codebase to use the new "mt-icon" component.
If you don't want to use the codemod, you can manually replace all occurrences of "sw-icon" with "mt-icon".
Following changes are necessary:
Replace all component names from "sw-icon" with "mt-icon"
Before:
<sw-icon name="regular-times-s" />
After:
<mt-icon name="regular-times-s" />
Replace the property "small" with "size" of value "16px" if used
Before:
<sw-icon name="regular-times-s" small />
After:
<mt-icon name="regular-times-s" size="16px" />
Replace the property "large" with "size" of value "32px" if used
Before:
<sw-icon name="regular-times-s" large />
After:
<mt-icon name="regular-times-s" size="32px" />
If no property "size", "small" or "large" is used, you need to use the "size" prop with the value "24px" to avoid a different default size than with "sw-icon"
Before:
<sw-icon name="regular-times-s" />
After:
<mt-icon name="regular-times-s" size="24px" />
The old "sw-card" component will be removed in the next major version. Please use the new "mt-card" component instead.
We will provide you with a codemod (ESLint rule) to automatically convert your codebase to use the new "mt-card" component.
If you don't want to use the codemod, you can manually replace all occurrences of "sw-card" with "mt-card".
Following changes are necessary:
Replace all component names from "sw-card" with "mt-card"
Before:
<sw-card>Hello World</sw-card>
After:
<mt-card>Hello World</mt-card>
Replace the property "aiBadge" by using the "sw-ai-copilot-badge" component directly inside the "title" slot
Before:
<mt-card aiBadge>Hello Wolrd</mt-card>
After:
<mt-card>
<slot name="title"><sw-ai-copilot-badge /></slot>
Hello World
</mt-card>
The property "contentPadding" is removed without a replacement.
Before:
<mt-card contentPadding>Hello World</mt-card>
After:
<mt-card>Hello World</mt-card>
- Removed
Shopware\Core\System\Snippet\Exception\FilterNotFoundException
. UseShopware\Core\System\Snippet\SnippetException::filterNotFound
instead. - Removed
Shopware\Core\System\Snippet\Exception\InvalidSnippetFileException
. UseShopware\Core\System\Snippet\SnippetException::invalidSnippetFile
instead.
The old "sw-text-field" component will be removed in the next major version. Please use the new "mt-text-field" component instead.
We will provide you with a codemod (ESLint rule) to automatically convert your codebase to use the new "mt-text-field" component.
If you don't want to use the codemod, you can manually replace all occurrences of "sw-text-field" with "mt-text-field".
Following changes are necessary:
Replace all component names from "sw-text-field" with "mt-text-field"
Before:
<sw-text-field>Hello World</sw-text-field>
After:
<mt-text-field>Hello World</mt-text-field>
Replace all occurrences of the "value" prop with "modelValue"
Before:
<mt-text-field value="Hello World" />
After:
<mt-text-field modelValue="Hello World" />
Replace all occurrences of the "v-model:value" directive with "v-model"
Before:
<mt-text-field v-model:value="myValue" />
After:
<mt-text-field v-model="myValue" />
Replace all occurrences of the "size" prop with "default"
Before:
<mt-text-field size="medium" />
After:
<mt-text-field size="default" />
Remove all occurrences of the "isInvalid" prop
Before:
<mt-text-field isInvalid />
After:
<mt-text-field />
Remove all occurrences of the "aiBadge" prop
Before:
<mt-text-field aiBadge />
After:
<mt-text-field />
Replace all occurrences of the "update:value" event with "update:modelValue"
Before:
<mt-text-field @update:value="updateValue" />
After:
<mt-text-field @update:modelValue="updateValue" />
Remove all occurrences of the "base-field-mounted" event
Before:
<mt-text-field @base-field-mounted="onFieldMounted" />
After:
<mt-text-field />
Remove all occurrences of the "label" slot. The slot content should be moved to the "label" prop. Only string values are supported. Other slot content is not supported anymore.
Before:
<mt-text-field>
<template #label>
My Label
</template>
</mt-text-field>
After:
<mt-text-field label="My label">
</mt-text-field>
The old "sw-switch-field" component will be removed in the next major version. Please use the new "mt-switch" component instead.
We will provide you with a codemod (ESLint rule) to automatically convert your codebase to use the new "mt-switch" component.
If you don't want to use the codemod, you can manually replace all occurrences of "sw-switch-field" with "mt-switch".
Following changes are necessary:
Replace all component names from "sw-switch-field" with "mt-switch".
Before:
<sw-switch-field>Hello World</sw-switch-field>
After:
<mt-switch>Hello World</mt-switch>
Replace all occurrences of the "noMarginTop" prop with "removeTopMargin".
Before:
<mt-switch noMarginTop />
After:
<mt-switch removeTopMargin />
Remove all occurrences of the "size" prop.
Before:
<mt-switch size="small" />
After:
<mt-switch />
Remove all occurrences of the "id" prop.
Before:
<mt-switch id="example-identifier" />
After:
<mt-switch />
Replace all occurrences of the "value" prop with "checked".
Before:
<mt-switch value="true" />
After:
<mt-switch checked="true" />
Remove all occurrences of the "ghostValue" prop.
Before:
<mt-switch ghostValue="true" />
After:
<mt-switch />
Remove all occurrences of the "padded" prop. Use CSS styling instead.
Before:
<mt-switch padded="true" />
After:
<mt-switch />
Remove all occurrences of the "partlyChecked" prop.
Before:
<mt-switch partlyChecked="true" />
After:
<mt-switch />
Replace all occurrences of the "label" slot with the "label" prop.
Before:
<mt-switch>
<template #label>
Foobar
</template>
</mt-switch>
After:
<mt-switch label="Foobar">
</mt-switch>
Remove all occurrences of the "hint" slot.
Before:
<mt-switch>
<template #hint>
Foobar
</template>
</mt-switch>
After:
<mt-switch>
<!-- Slot "hint" was removed with no replacement. -->
</mt-switch>
The old "sw-number-field" component will be removed in the next major version. Please use the new "mt-number-field" component instead.
We will provide you with a codemod (ESLint rule) to automatically convert your codebase to use the new "mt-number-field" component.
If you don't want to use the codemod, you can manually replace all occurrences of "sw-number-field" with "mt-number-field".
Following changes are necessary:
Replace all component names from "sw-number-field" with "mt-number-field"
Before:
<sw-number-field />
After:
<mt-number-field />
Replace all occurrences of the "value" prop with "modelValue"
Before:
<mt-number-field :value="5" />
After:
<mt-number-field :modelValue="5" />
Replace all occurrences of the "v-model:value" directive with the combination of :modelValue
and @change
Before:
<mt-number-field v-model:value="myValue" />
After:
<mt-number-field :modelValue="myValue" @change="myValue = $event" />
Replace all occurrences of the "label" slot with the "label" prop
Before:
<mt-number-field>
<template #label>
My Label
</template>
</mt-number-field>
After:
<mt-number-field label="My Label" />
Replace all occurrences of the "update:value" event with the "change" event
Before:
<mt-number-field @update:value="updateValue" />
After:
<mt-number-field @change="updateValue" />
The old "sw-loader" component will be removed in the next major version. Please use the new "mt-loader" component instead.
We will provide you with a codemod (ESLint rule) to automatically convert your codebase to use the new "mt-loader" component.
If you don't want to use the codemod, you can manually replace all occurrences of "sw-loader" with "mt-loader".
Following changes are necessary:
Replace all component names from "sw-loader" with "mt-loader"
Before:
<sw-loader />
After:
<mt-loader />
The old "sw-checkbox-field" component will be removed in the next major version. Please use the new "mt-checkbox" component instead.
We will provide you with a codemod (ESLint rule) to automatically convert your codebase to use the new "mt-checkbox" component.
If you don't want to use the codemod, you can manually replace all occurrences of "sw-checkbox-field" with "mt-checkbox".
Following changes are necessary:
Replace all component names from "sw-checkbox-field" with "mt-checkbox"
Before:
<sw-checkbox-field />
After:
<mt-checkbox />
Replace all occurrences of the "value" prop with "checked"
Before:
<sw-checkbox-field :value="myValue" />
After:
<mt-checkbox :checked="myValue" />
Replace all occurrences of the "v-model" directive with "v-model:checked"
Before:
<sw-checkbox-field v-model="isCheckedValue" />
After:
<mt-checkbox v-model:checked="isCheckedValue" />
Replace all occurrences of the "label" slot with the "label" prop
Before:
<sw-checkbox-field>
<template #label>
Hello Shopware
</template>
</sw-checkbox-field>
After:
<mt-checkbox label="Hello Shopware">
</mt-checkbox>
The "hint" slot was removed without replacement
Before:
<sw-checkbox-field>
<template v-slot:hint>
Hello Shopware
</template>
</sw-checkbox-field>
The "id" prop was removed without replacement
Before:
<sw-checkbox-field id="checkbox-id" />
The "ghostValue" prop was removed without replacement
Before:
<sw-checkbox-field ghostValue="yes" />
Replace all occurrences of the "partlyChecked" prop with "partial"
Before:
<sw-checkbox-field partlyChecked />
After:
<mt-checkbox partial />
The "padded" prop was removed without replacement
Before:
<sw-checkbox-field padded />
Replace all occurrences of the "update:value" event with "update:checked"
Before:
<sw-checkbox-field @update:value="updateValue" />
After:
<mt-checkbox @update:checked="updateValue" />
We added a new optional parameter bool $recursive
to TreeUpdater::batchUpdate
.
If you extend the TreeUpdater
class, you should properly handle the new parameter in your custom implementation.
<?php
class CustomTreeUpdater extends TreeUpdater
{
public function batchUpdate(array $updateIds, string $entity, Context $context, bool $recursive = false): void
{
parent::batchUpdate($updateIds, $entity, $context, $recursive);
}
}
\Shopware\Core\Framework\DataAbstractionLayer\Command\CreateSchemaCommand
will be removed. You can use \Shopware\Core\Framework\DataAbstractionLayer\Command\CreateMigrationCommand
instead.
\Shopware\Core\Framework\DataAbstractionLayer\SchemaGenerator
will be removed. You can use \Shopware\Core\Framework\DataAbstractionLayer\MigrationQueryGenerator
instead.
- Replace
isEmailUsed
withisEmailAlreadyInUse
insw-users-permission-user-detail
.
- Replace
isEmailUsed
withisEmailAlreadyInUse
insw-users-permission-user-detail
.
The Shopware\Core\Checkout\Customer\SalesChannel\AccountService::login
method is removed. Use AccountService::loginByCredentials
or AccountService::loginById
instead.
Unused constant Shopware\Core\Checkout\Customer\CustomerException::CUSTOMER_IS_INACTIVE
and unused method Shopware\Core\Checkout\Customer\CustomerException::inactiveCustomer
are removed.
floatMatch
andarrayMatch
methods insrc/Core/Framework/Rule/CustomFieldRule.php
will be removed for Shopware 6.7.0.0
The technicalName
property will be required for payment and shipping methods in the API.
The technical_name
column will be made non-nullable for the payment_method
and shipping_method
tables in the database.
Plugin developers will be required to supply a technicalName
for their payment and shipping methods.
Merchants must review their custom created payment and shipping methods for the new technicalName
property and update their methods through the administration accordingly.