Перейти к основному содержимому

Открыт от внешнего идентификатора

Есть 2 разных подхода:

  1. Вы можете зацепить непосредственно в резолювере Pimcore Pimcore по умолчанию, используя событие этот
  2. или добавьте независимую запись в меню и ярлык, аналогичный объекту открытых данных по умолчанию (Ctrl + Shift + O) в пользовательский интерфейс администратора.

меню Messagebox

Создайте пакет с интерфейсом бэкэнд -интерфейса Pimcore, как описано здесь.

document.addEventListener(pimcore.events.pimcoreReady, (e) => {  
const shortcutKey = 'l';
const endPoint = '/admin/find-by-external-id';


const messageBoxTitle = t('app_external_id_messagebox_title');
const messageBoxText = t('app_external_id_messagebox_errormessage');
const menuTitle = t('app_external_id_menu_title');


const openMessageBox = function() {
Ext.MessageBox.prompt(t("open_data_object"), messageBoxTitle, function(btn, text){
if(btn == 'ok'){
Ext.Ajax.request({
url: endPoint,
method: "post",
params: {
'external-id': text
},
success: function(response){
var res = Ext.decode(response.responseText);
if(res) {
pimcore.helpers.openElement(res, 'object');
} else{
pimcore.helpers.showNotification(t("error"), messageBoxText, "error");
}
}
});
}
})
};

const toolbar = pimcore.globalmanager.get("layout_toolbar");
const fileMenu = toolbar.fileMenu;
if(fileMenu) {
fileMenu.insert(4, {
text: menuTitle,
iconCls: 'pimcore_icon_object pimcore_icon_overlay_go',
cls: 'pimcore_main_menu',
handler: openMessageBox
});
}

new Ext.util.KeyMap({
target: document,
key: shortcutKey,
fn: openMessageBox,
ctrl:true,
alt:false,
shift:true,
stopEvent:true
});

});

Create a controller to find your DataObject

namespace App\Controller\Admin;  

use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;

class BackendController
{
/**
* @Route("/admin/find-by-external-id")
*/
public function findByWordpressId(Request $request): JsonResponse
{
if ($id = $request->query->getInt('external-id')) {
if($object = MyObject::getByExternalId($id)) {
return new JsonResponse($object->getId());
}
}

return new JsonResponse(0);
}
}



Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.