Magento 2: validação de configuração salva system.xml

9

Eu desenvolvi uma extensão para Magento2 que salva configurações usando um system.xml e gostaria de validar os valores inseridos pelo usuário. Como posso validar esses valores?

Omry Zobel
fonte
Que tipo de valores você deseja validar, se os valores forem contáveis, tente usar o menu suspenso e restrinja o usuário.
Amit_game
@amit_game Infelizmente é campos de entrada para texto e eu preciso de alguma validação personalizada (pelo menos que a entrada não é nulo)
Omry Zobel

Respostas:

13

Você pode aplicar a validação na caixa de texto no magento 2 assim,

<field id="custom_path" translate="label comment" type="text" sortOrder="4" showInDefault="1" showInWebsite="0" showInStore="0">
   <label>Custom Admin Path</label>
   <validate>required-entry</validate>              
   <comment>You will have to sign in after you save your custom admin path.</comment>
</field>

Você pode manter o validate-alphanum or validate-numbervalor alfanumérico e numérico dentro da tag validate.

Obrigado.

Rakesh Jesadiya
fonte
8

você pode anexar um modelo de back-end ao campo e pode validar o valor do lado do servidor.

Você pode encontrar um exemplo em Magento_Backend/etc/adminhtml/system.xml:

<field id="base_url" translate="label comment" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
    <label>Base URL</label>
    <backend_model>Magento\Config\Model\Config\Backend\Baseurl</backend_model>
    <comment>Specify URL or {{base_url}} placeholder.</comment>
</field>

como você pode ver, esse campo possui o modelo de back-end Magento\Config\Model\Config\Backend\Baseurl.
Isso significa que o método Magento\Config\Model\Config\Backend\Baseurl::beforeSaveserá chamado ao salvar o campo. Você pode usar este método para lançar exceções se algo estiver errado e a configuração não for salva.

Você pode criar seu próprio modelo que atua como um modelo de back-end para o seu campo.

Marius
fonte
4

tente isso

 <field id="test" translate="label" type="text" sortOrder="8" showInDefault="1" showInWebsite="1" showInStore="0">
                    <label>Handling Fee</label>
                    <validate>required-entry</validate>
                </field>

veja abaixo a imagem é validada quando clico no botão salvar.

digite o texto pré-formatado aqui

Bojjaiah
fonte
como adicionar marca de asterisco (*) após o rótulo?
Rajeev Singh
0

Abaixo está um exemplo de Validando para required-entrydentro system.xml, espero que ajude você -

<a2bizz_field_test>
    <label> Valor do texto </label>
    <frontend_type> texto </frontend_type>
    <validate> entrada obrigatória </validate>
    <sort_order> 5 </sort_order>
    <show_in_default> 1 </show_in_default>
    <show_in_website> 1 </show_in_website>
    <show_in_store> 1 </show_in_store>
</a2bizz_field_test>

para validação personalizada, acesse o URL abaixo -

http://alanstorm.com/magento_system_config_validation

amit_game
fonte
sua resposta é para magento 1. O op perguntou sobre magento 2
Marius
ah! i irá atualizá-lo em breve, graças @Marius
amit_game