にユーザー用の複数のカスタム フィールドがありますs_user_attributes
。顧客の概要ビューでそれらを表示する方法があるかどうか疑問に思っていました。別のウィンドウを作成できることは知っていますが、デフォルトのウィンドウ内で行うことはできますか?
そのようなドキュメントがありますが、私が探しているものがそこにありません: https://developers.shopware.com/developers-guide/backend-components/listing/
にユーザー用の複数のカスタム フィールドがありますs_user_attributes
。顧客の概要ビューでそれらを表示する方法があるかどうか疑問に思っていました。別のウィンドウを作成できることは知っていますが、デフォルトのウィンドウ内で行うことはできますか?
そのようなドキュメントがありますが、私が探しているものがそこにありません: https://developers.shopware.com/developers-guide/backend-components/listing/
はい、リスト ビューを拡張することは可能です。私の例billingPhone
では、shippingPhone
が追加されています。
まず、次のイベントにサブスクライブする必要があります。
'Enlight_Controller_Action_PostDispatchSecure_Backend_Customer' => 'onCustomerPostDispatch',
'Shopware_Controllers_Backend_CustomerQuickView::getModelFields::after' => 'addPhoneOnFields',
'Shopware_Controllers_Backend_CustomerQuickView::getListQuery::after' => 'addPhoneOnSelect',
次に、データをロードする必要があります。
public function addPhoneOnSelect(\Enlight_Hook_HookArgs $args)
{
/** @var \Shopware_Controllers_Backend_CustomerQuickView $subject */
$return = $args->getReturn();
$return->addSelect('billing.phone as billingPhone');
$return->addSelect('shipping.phone as shippingPhone');
$return->leftJoin('customer.defaultShippingAddress', 'shipping');
$args->setReturn($return);
}
public function addPhoneOnFields(\Enlight_Hook_HookArgs $args)
{
$return = $args->getReturn();
$return['billingPhone'] = ['alias' => 'billing.phone', 'type' => 'string'];
$return['shippingPhone'] = ['alias' => 'shipping.phone', 'type' => 'string'];
$args->setReturn($return);
}
次に、データを使用してビューを拡張する必要があります
public function onCustomerPostDispatch(Enlight_Controller_ActionEventArgs $args)
{
/** @var \Enlight_Controller_Action $controller */
$controller = $args->getSubject();
$view = $controller->View();
$request = $controller->Request();
$view->addTemplateDir(($this->container->getParameter('reply_extend_customer_overview.plugin_dir') . '/Resources/views/'));
if ($request->getActionName() == 'load') {
$view->extendsTemplate('backend/swag_extend_customer_overview/view/detail/window.js');
$view->extendsTemplate('backend/swag_extend_customer_overview/model/quick_view.js');
$view->extendsTemplate('backend/swag_extend_customer_overview/view/main/customer_list.js');
}
}
このようにリストのモデルを拡張する必要があります
// {block name="backend/customer/model/quick_view/fields" append}
{ name: 'billingPhone', type: 'string', useNull: true },
{ name: 'shippingPhone', type: 'string', useNull: true },
// {/block}
そしてリスト
// {namespace name=backend/customer/view/main}
// {block name="backend/customer/view/main/customer_list" append}
Ext.define('Shopware.apps.SwagExtendCustomerOverview.view.main.CustomerList', {
override: 'Shopware.apps.Customer.view.main.CustomerList',
alias: 'widget.customer-list',
configure: function() {
return {
displayProgressOnSingleDelete: false,
/* {if {acl_is_allowed privilege=delete}} */
deleteButton: true,
deleteColumn: true,
/* {else} */
deleteButton: false,
deleteColumn: false,
/* {/if} */
/* {if {acl_is_allowed privilege=detail}} */
editColumn: true,
/* {else} */
editColumn: false,
/* {/if} */
/* {if {acl_is_allowed privilege=update}} */
addButton: true,
/* {else} */
addButton: false,
/* {/if} */
columns: {
active: { header: '{s name="active"}{/s}', width: 50 },
id: { header: '{s name="id"}{/s}' },
customerGroup: { header: '{s name="column/customer_group"}{/s}' },
shop: { header: '{s name="shop"}{/s}' },
number: { header: '{s name="column/number"}{/s}' },
email: { header: '{s name="email"}{/s}', renderer: this.mailRenderer, flex: 2 },
salutation: { header: '{s name="salutation"}{/s}', renderer: this.salutationRenderer },
title: { header: '{s name="title"}{/s}', width: 70 },
company: { header: '{s name="company"}{/s}' },
firstname: { header: '{s name="column/first_name"}{/s}' },
lastname: { header: '{s name="column/last_name"}{/s}' },
zipcode: { header: '{s name="zip_code"}{/s}' },
city: { header: '{s name="city"}{/s}' },
firstLogin: { header: '{s name="first_login"}{/s}' },
lastLogin: { header: '{s name="lastLogin"}{/s}' },
accountMode: { header: '{s name="column/accountMode"}{/s}', renderer: this.accountModeRenderer },
lockedUntil: { header: '{s name="lockedUntil"}{/s}' },
birthday: { header: '{s name="birthday"}{/s}' },
billingPhone: { header: '{s name="default_billing_phone_label" namespace="backend/plugins/xxx/translation"}Billing phone{/s}' },
shippingPhone: { header: '{s name="default_shipping_phone_label" namespace="backend/plugins/xxx/translation"}Billing phone{/s}' },
}
};
},
});
// {/block}