Me gustaría crear un atributo de solo lectura, sin embargo, parece que no es posible.
He intentado pasar a addAttribute () 'disabled' =>true
o 'readonly' => true
sin ningún éxito. He descubierto algunas sugerencias sobre el uso, setLockedAttributes()
pero por alguna razón no funciona.
Referencia:
Varien_Data_Form_Element_Abstract::serialize($attributes = array(), $valueSeparator='=', $fieldSeparator=' ', $quote='"')
setLockedAttribute
, eslockAttribute
:-)Respuestas:
Del artículo SO referido: lo intenté y esto de hecho funciona en 1.6CE y 1.7CE / 1.12EE. Todavía no lo he probado en 1.8 / 1.13.
/programming/6384120/magento-read-only-and-hidden-product-attributes
fuente
catalog_product_edit_action
evento ( stackoverflow.com/a/7874345/394589 ), si el bloqueo solo debe realizarse al editar ofc.Si es suficiente para que no sea editable en la gestión del producto, utilice el tipo de entrada de la interfaz
label
, que reemplaza la entrada del formulario con texto sin formato:Tenga en cuenta que esto no impedirá guardar el atributo a través de API o solicitud POST manipulada. Para hacerlo seguro, utilice adicionalmente
lockAttribute()
como se sugiere anteriormente .Además, solo se ve bien para los atributos de tipo de texto, para otros tipos, nuevamente, recurra
lockAttributes
o extienda el tipo de "etiqueta".fuente
Para arreglar esto, también puede utilizar un procesador de entrada para esto. La desventaja es que tendría que hacer esto para cada tipo de entrada y configurarlo mediante la configuración de cada atributo.
Para hacerlo, use la tecla input_renderer cuando use addAttribute un atributo o frontend_input_renderer cuando use updateAttribute . Ejemplo:
Luego, con su clase,
Yourns_Yourmodule_Block_Adminhtml_Product_Helper_Form_DisabledText
extienda la clase de entrada que realmente usaría. Para un campo de texto seríaVarien_Data_Form_Element_Text
. Para selecciones seríaVarien_Data_Form_Element_Select
y así sucesivamente.Ahora agregue su código como este para deshabilitar el atributo, sobrescribiendo el
getHtml
método, configurando el atributo y devolviendo el código HTML real para el campo de entrada:El método se puede encontrar en lib / Varien / Data / Form / Abstract.php, que será heredado por todos los campos de elementos de entrada de formulario, por lo que siempre debe estar disponible.
Probablemente tenga sentido incluir la clase deshabilitada en la configuración de atributos como se muestra arriba para visualizar la posibilidad de entrada denegada. Probablemente también puedas usarlo
$this->addClass('disabled')
en el método, todavía no lo intenté.fuente