Segue a documentação: http://help.vtex.com/pt/faq/criar-formulario-de-fale-conosco-usando-master-data
Yo seguí estos pasos, ya el formulario está creado
http://help.vtex.com/es/tutorial/creando-formulario-en-master-data
Pero no sé cómo mostrarlo
Na documentação que enviei existe um link para baixar um exemplo de html/javascript.
Mira como lo tengo
<h6>COMPÁRTENOS TUS DATOS</h6>
<script type="text/javascript">
$(document).ready(function(){
var storeName = "{Bienvenida}"; //Indica o nome da conta utilizada na API do MasterData
var dataEntity = "BN"; //Indica a sigla da entidade de dados utilizada na API do MasterData
var htmlElementId = "contactForm"; //Indica o ID do elemento HTML que receberá o formulário
var messageLoading = "Cargando..."; //Mensagem de carregamento do formulário (ao salvar)
var messageValidation = "* CAMPO REQUERIDO"; //Mensagem de validação de formulário
var messageSuccess = "REALIZADO CON ÉXITO. REVISE SU CORREO"; //Mensagem de sucesso
var messageError = "Algún error ocurrió. Inténtelo de nuevo más tarde."; //Mensagem de erro
FormCreate(storeName, dataEntity, htmlElementId, messageLoading, messageValidation, messageSuccess, messageError);
});
</script>
<div id="contactForm"></div>
</div>
Este es el JS
function ContactCreate(storeName, dataEntity, co_client)
{
var co_description = $("#co_description").val();
var co_type = $("#co_type").val();
var jsonCO = {
"client": co_client.replace("CL-","")
};
var urlCO = "/api/dataentities/" + dataEntity + "/documents/";
$.ajax({
headers: {
"Accept": "application/vnd.vtex.ds.v10+json",
"Content-Type": "application/json"
},
data: JSON.stringify(jsonCO),
type: 'PATCH',
url: urlCO,
success: function (data) {
console.log(data);
ResetMessages()
$("#co_message_success").show();
$("#BN_nombre").val("");
$("#BN_email").val("");
},
error: function (data) {
console.log(data);
ResetMessages()
$("#co_message_error").show();
}
});
}
function ContactCreateByEmail(storeName, dataEntity, BN_email)
{
var cl_url = "/api/dataentities/CL/search/?email=" + BN_email + "&_fields=id";
$.ajax({
headers: {
"Accept": "application/vnd.vtex.ds.v10+json",
"Content-Type": "application/json"
},
type: 'GET',
url: cl_url,
success: function(data, textStatus, xhr){
console.log(data);
if(xhr.status == "200" || xhr.status == "201"){
ContactCreate(storeName, dataEntity, data[0].id);
}else{
ResetMessages()
$("#co_message_error").show();
}
},
error: function(data){
console.log(data);
ResetMessages()
$("#co_message_error").show();
}
});
}
function ClientCreate()
{
var storeName = $("#master_data_store_name").val();
var dataEntity = $("#master_data_data_entity").val();
var BN_nombre = $("#BN_nombre").val();
var BN_email = $("#BN_email").val();
var cl_json = {
"firstName": BN_nombre,
"email": BN_email,
};
var cl_url = "/api/dataentities/CL/documents/";
$.ajax({
headers: {
"Accept": "application/vnd.vtex.ds.v10+json",
"Content-Type": "application/json"
},
data: JSON.stringify(cl_json),
type: 'PATCH',
url: cl_url,
success: function(data, textStatus, xhr){
console.log(data);
if(xhr.status == "200" || xhr.status == "201"){
ContactCreate(storeName, dataEntity, data.Id);
}else if(xhr.status == "304"){
ContactCreateByEmail(storeName, dataEntity, BN_email);
}else{
ResetMessages()
$("#co_message_error").show();
}
},
error: function(data){
console.log(data);
ResetMessages()
$("#co_message_error").show();
}
});
}
function ResetMessages()
{
$("#co_message_loading").hide();
$("#co_message_validate").hide();
$("#co_message_success").hide();
$("#co_message_error").hide();
}
function IsEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
function FormValidate()
{
var isFormValidate = true;
if($("#BN_nombre").val() == ""){
isFormValidate = false;
$("#BN_nombre").focus();
}
if((isFormValidate) && ($("#BN_email").val() == "")){
isFormValidate = false;
$("#BN_email").focus();
}
if(isFormValidate){
ResetMessages()
$("#co_message_loading").show();
ClientCreate();
}else{
ResetMessages()
$("#co_message_validate").show();
}
return false;
}
function FormCreate(storeName, dataEntity, htmlElementId, messageLoading, messageValidation, messageSuccess, messageError){
var htmlContent = '';
htmlContent += '<form id="co_form" action="javascript:FormValidate();" method="post">';
htmlContent += '<input type="hidden" id="master_data_store_name" name="master_data_store_name" value="' + storeName + '" />';
htmlContent += '<input type="hidden" id="master_data_data_entity" name="master_data_data_entity" value="' + dataEntity + '" />';
htmlContent += '<div class="input-field required BN_nombre">';
htmlContent += '<label for="BN_nombre"> </label>';
htmlContent += '<input placeholder="Tu nombre completo" id="BN_nombre" maxlength="100" name="BN_nombre" type="text" class="validate" />';
htmlContent += '</div>';
htmlContent += '<div class="input-fieldstring required BN_email">';
htmlContent += '<label for="BN_email"> </label>';
htmlContent += '<input placeholder="Ingresa tu correo" id="BN_email" maxlength="100" name="BN_email" type="text" class="validate" />';
htmlContent += '</div>';
htmlContent += '<div id="co_message_loading" class="alert alert-info" style="display:none;">' + messageLoading + '</div>';
htmlContent += '<div id="co_message_validate" class="alert alert-warning" style="display:none;">' + messageValidation + '</div>';
htmlContent += '<div id="co_message_success" class="alert alert-success" style="display:none;">' + messageSuccess + '</div>';
htmlContent += '<div id="co_message_error" class="alert alert-danger" style="display:none;">' + messageError + '</div>';
htmlContent += '<div class="input-field submit waves-effect waves-light btn"><input id="commit" name="commit" type="submit" value="LO QUIERO"></div>';
htmlContent += '</form>';
$("#"+htmlElementId).html(htmlContent);
}
Pero los datos no me guardan, registra un nuevo cliente pero vacío
O primeiro erro que vejo é a variável storeName:
var storeName = "{Bienvenida}";
Deveria ser:
var storeName = "bienvenida";
Buenas tardes con todos, quisiera saber si lograron publicar de esta manera el formulario ya que estoy intentando lo mismo y tengo problema con asignación del CORS del js y con las demás cosas estoy tenido dificultad