tutorial pricing plataforma español magento

magento - pricing - ¿Es una buena práctica agregar un archivo propio en la carpeta lib/Varien/Data/Form/Element



magento tutorial (1)

No, no es. Nunca debe editar ni agregar archivos provistos por un proveedor. Si absolutamente debe reemplazar un archivo de clase, debe usar el grupo de códigos locales. Por ejemplo, si desea cambiar el comportamiento de un campo de texto,

lib/Varien/Data/Form/Element/Text.php

Debe colocar un archivo en el grupo de códigos locales o de la comunidad

app/code/local/Varient/Data/Form/Element/Text.php

Sin embargo, al reemplazar la clase, se convierte en su responsabilidad mantener la compatibilidad con versiones futuras. Eso significa que si Magento Inc. cambia lib/Varien/Data/Form/Element/Text.php , debe actualizar su versión para que sea compatible.

De acuerdo con lo que dijiste, buscaría crear una reescritura de clase para la clase Block que representa el formulario.

Necesito crear un módulo en Magento que tendrá pocas tablas de base de datos. Una de las funciones del módulo es agregar múltiples imágenes. Por ejemplo, estando en la página " Agregar nuevo elemento " o " Editar elemento " en el administrador, desde el lado izquierdo tengo pestañas, una de ellas es " Imágenes de artículos ". Al hacer clic, quiero que el contenido de esta pestaña sea el mío. Después de indagar en el código, descubrió que por la forma en que presenta este contenido, Magento está utilizando una de las clases Varien_Data_Form_Element para cada elemento en el formulario completo. Quiero agregar mi propia clase aquí que renderice los elementos del formulario de la manera que quiero. ¿Es esta una buena práctica para hacerlo, o hay alguna otra forma más elegante de agregar contenido propio en los formularios de administración? EDITAR: debo agregar que ninguna de las clases existentes está ayudando a mi problema.

EDICIÓN DE SOLUCIÓN: Tengo un controlador en mi módulo personalizado que está en Mypackage / Mymodule / controllers / Adminhtml / Item.php . En el método editAction () que estoy usando para agregar y crear nuevos elementos, estoy creando 2 bloques, uno para el formulario y el otro para las pestañas:

$this->_addContent($this->getLayout()->createBlock(''item/adminhtml_edit'')) ->_addLeft($this->getLayout()->createBlock(''item/adminhtml_edit_tabs'')); $this->renderLayout();

El bloque Block / Adminhtml / Edit / Tabs.php está creando 2 pestañas a la izquierda: información general e imágenes de elementos , cada una de ellas está representando contenido diferente en el lado derecho usando clases de bloques.

protected function _beforeToHtml() { $this->addTab(''item_info'', array( ''label'' => Mage::helper(''mymodule'')->__(''Item Info''), ''content''=> $this->getLayout()->createBlock(''item/adminhtml_edit_tab_form'')->toHtml(), )); $this->addTab(''item_images'', array( ''label'' => Mage::helper(''mymodule'')->__(''Item Images''), ''active'' => ( $this->getRequest()->getParam(''tab'') == ''item_images'' ) ? true : false, ''content'' => $this->getLayout()->createBlock(''item/adminhtml_images'')->toHtml(), )); return parent::_beforeToHtml(); }

Quería que la pestaña item_images represente mis propios elementos y valores de formulario, no los elementos de formulario varien predeterminados.

class Mypackage_Mymodule_Block_Adminhtml_Images extends Mage_Core_Block_Template { public function __construct() { parent::__construct(); $this->setTemplate(''item/images.phtml''); //This is in adminhtml design } public function getPostId() { return $this->getRequest()->getParam(''id''); } public function getExistingImages() { return Mage::getModel(''mymodule/item'')->getImages($this->getPostId()); } }

Luego, en la plantilla de la aplicación / design / adminhtml / default / default / template / item / images.phtml puede usar estos valores:

//You can add your own custom form fields here and all of them will be included in the form foreach($this->getExistingImages() as $_img): //Do something with each image endforeach; //You can add your own custom form fields here and all of them will be included in the form