Gostaria de criar um atributo somente leitura, no entanto, parece que não é possível.
Eu tentei passar para addAttribute () 'disabled' =>true
ou 'readonly' => true
sem qualquer sucesso. Descobri alguma sugestão sobre o uso, setLockedAttributes()
mas por algum motivo não está funcionando
Referência:
Varien_Data_Form_Element_Abstract::serialize($attributes = array(), $valueSeparator='=', $fieldSeparator=' ', $quote='"')
setLockedAttribute
, élockAttribute
:-)Respostas:
No artigo do SO mencionado - eu tentei e isso realmente funciona em 1.6CE e 1.7CE / 1.12EE. Ainda não testei o 1.8 / 1.13.
/programming/6384120/magento-read-only-and-hidden-product-attributes
fonte
catalog_product_edit_action
evento ( stackoverflow.com/a/7874345/394589 ), se o bloqueio precisar ser feito apenas ao editar ofc.Se for o suficiente para torná-lo não editável no gerenciamento de produtos, use o tipo de entrada frontend
label
, que substitui a entrada do formulário por texto sem formatação:Observe que isso não impedirá o salvamento do atributo por meio da API ou da solicitação POST manipulada. Para torná-lo seguro, use adicionalmente
lockAttribute()
como sugerido acima .Além disso, parece bom apenas para os atributos de tipo de texto, para outros tipos, novamente, recuem
lockAttributes
ou estendam o tipo "label".fonte
Para corrigir isso, você pode usar um renderizador de entrada como alternativa. A desvantagem é que você teria que fazer isso para cada tipo de entrada e configurá-lo via configuração para cada atributo.
Para fazer isso, use a chave input_renderer ao usar addAttribute um atributo ou frontend_input_renderer ao usar updateAttribute . Exemplo:
Então, com sua classe,
Yourns_Yourmodule_Block_Adminhtml_Product_Helper_Form_DisabledText
estenda a classe de entrada que você realmente usaria. Para um campo de texto seriaVarien_Data_Form_Element_Text
. Para seleciona seriaVarien_Data_Form_Element_Select
e assim por diante.Agora adicione seu código assim para desativar o atributo, substituindo o
getHtml
método, configurando o atributo e retornando o código HTML real para o campo de entrada:O método pode ser encontrado em lib / Varien / Data / Form / Abstract.php, que será herdado por todos os campos do elemento de entrada do formulário, portanto, deve estar sempre disponível.
Provavelmente, é sensato incluir a classe desativada na configuração do atributo, como mostrado acima, para visualizar a possibilidade de entrada negada. Você provavelmente também pode usar
$this->addClass('disabled')
no método, eu ainda não tentei isso.fonte