** RESOLVIDO ** Carregar dados de uma requisição para dentro de um campo select

Em uma aplicação formulário criei um campo select simples para receber os dados provenientes de uma requisição.
Os dados são carregados pois já verifiquei via var_dump.
Porém, ao executar, aparece a aplicação, aparece o Label do campo select, mas não o campo.
O campo está visível, não desabilitado e o método está como Automático, embora o lookup de edição esteja vazio.
A função de carregar está no Evento OnLoad e é a seguinte:

$url = “https://parallelum.com.br/fipe/api/v1/carros/marcas”;
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Caso haja algum problema com certificados SSL

$result = curl_exec($ch);

if(curl_errno($ch)){
echo 'Erro: ’ . curl_error($ch);
}

curl_close($ch);

$marcas = json_decode($result, true);

$options_array = array();

foreach($marcas as $marca) {
$options_array[$marca[‘codigo’]] = $marca[‘nome’];
}

// Definindo as opções do campo select
{modelo} = $options_array;

O que faz você pensar Que mover o array para o campo tipo select vai construir os itens do select?

Mestre, não faço a menos idéia, mas é o que quero que aconteça.
Até no chatgpt pesquisei e utilizando todas as respostas dele acontece o mesmo resultado ou pior. Em uma dessas respostas me é sugerido utilizar a função sc_field_complete que nem habilitada está. Você pode me ajudar, Irmão?

Pesquise aqui Select Dinamico

como vou conseguir o id do campo (via inspeção, creio) se ele nem aparece quando a aplicação é executada?

Comente essa linha do seu código:
modelo} = $options_array;

É incompreensível, Mestre. O campo está como habilitado e não escondido e ao inspecionar aparece “hidden_field_data_modelo”

Comentou a linha.
O select tem algum item manual?

Nenhum item manual, nem de negação.
Comentei a linha para que o suposto array não seja carregado no campo select.

Criei um item
Qualquer manual apenas para exibir o select e pegar o id via inspeção

id_sc_field_modelo Este é o id do campo após inserir um manual para o campo aparecer.

Se eu adaptar seu código ao meu deverei ter:

$url = “https://parallelum.com.br/fipe/api/v1/carros/marcas”;
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Caso haja algum problema com certificados SSL

$result = curl_exec($ch);

if(curl_errno($ch)){
echo 'Erro: ’ . curl_error($ch);
}

curl_close($ch);

$marcas = json_decode($result, true);

$options_array = array();

foreach ($array as $key =>$value) {
$option .= “$value”;
}
echo <<<HTML

HTML;

Porém, não entendi de onde vieram as variáveis $key e $value

Do foreach.

Você tem Que adaptar seu código ao que sugeri.

$url = “https://parallelum.com.br/fipe/api/v1/carros/marcas”; $ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Caso haja algum problema com certificados SSL

$result = curl_exec($ch);

if(curl_errno($ch)){
echo 'Erro: ’ . curl_error($ch);
}

curl_close($ch);

$marcas = json_decode($result, true);

$options_array = array();

foreach ($array as $key =>$value) {
$option .= “$value”;
}
echo <<<HTML

HTML;

Adaptei gerando este código acima, porém, nada acontece. Onde está o erro, por favor?

Se $marcas contém o array, o foreach deve ser em $marcas.

E o código não esta Completo.

1 Curtida

Sim, além de apontar para o $marcas, precisava quebrar o array nas variáveis que ele continha. Agora funciona, obrigado! E segue abaixo a imagem do código completo. Segue em imagem pq na hora de colar o código aqui, a parte escrita dentro do < script > não aparece.

Para colar código use [code] e [/code]

2 Curtidas