Estoy trabajando con una extensión personalizada relacionada con múltiples sitios web. Me enfrento a un problema, defino un código de script que se ejecuta en el Panel de administración al obtener el Id. Esperaba un resultado website_id
como 0 (ID predeterminada en la store_website
tabla). Pero cuando uso esta función a continuación, siempre devuelve 1.
/** @var \Magento\Store\Model\StoreManagerInterface */
$this->_storeManager->getStore()->getWebsiteId(); //return 1, expect 0
$this->_storeManager->getWebsite()->getId(); //return 1
Mi pregunta : ¿Alguna forma de ponerse al día
website_id
en el Panel de administración o definir una función ejecutada en eladminhtml
área?Nota: Esta función debe funcionar tanto en la interfaz como en el servidor.
Cualquier ayuda sería apreciada.
Respuestas:
La idea general es pasar el alcance, elegido, a través del parámetro de solicitud.
Creo que debería usar un código similar al de la acción de edición del producto:
En este caso,
$store->getWebsiteId()
debe ser la identificación real (seleccionada) del sitio web. Pero esto solo se puede hacer en caso de que use el bloque de tienda que funciona de la misma manera que un bloque de magento estándar (para seleccionar un alcance de tienda):Aquí está mi resultado en el ejemplo cuando selecciono la vista de tienda predeterminada (id == 1):
y aquí está el alcance global predeterminado ( Todas las vistas de la tienda , la identificación del sitio web es 0):
Actualizar:
Puede agregar un método como este en el asistente y usarlo donde desee:
El resultado debería ser así:
Backend sin selector de alcance - 0
Respaldado con selector de alcance: ID del sitio web seleccionado o 0 si no se selecciona nada (Todas las vistas de la tienda)
Frontend - ID actual del sitio web
Si está buscando el camino corto en la interfaz:
Puede usar la
Magento\Store\Model\StoreResolver
clase para ese propósito:Detecta correctamente la vista de la tienda seleccionada actualmente en el área de la interfaz, pero es inútil para el área de administración.
fuente
website_id = 0