Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No data in relation ( select-dropdown ) #5925

Open
DanielGomeX opened this issue Nov 4, 2024 · 0 comments
Open

No data in relation ( select-dropdown ) #5925

DanielGomeX opened this issue Nov 4, 2024 · 0 comments

Comments

@DanielGomeX
Copy link

Laravel version

8.83.27

PHP version

8.0.13

Voyager version

1.7

Database

MySQL 5.7

Description

Descrição do Problema:
Ao configurar um campo do tipo select-dropdown em um relacionamento para exibir o nome de um cliente e salvar apenas o ID correspondente, o Voyager não exibe corretamente as opções e apresenta inconsistências. O dropdown inicia a listagem a partir do último registro e não do primeiro, o que resulta em uma exibição desordenada e causa erros de seleção para o usuário final.

Passos para Reproduzir o Erro:

Configure um relacionamento no Voyager entre uma tabela principal e uma tabela de clientes, onde:
    O campo cliente_id armazena o ID do cliente na tabela principal.
    O label do relacionamento é configurado para exibir o nome do cliente.
Acesse o campo de relacionamento no formulário de edição de registros.
Verifique que as opções do dropdown começam a contar a partir do último registro, em vez de começar pelo primeiro registro, como seria o esperado.

Comportamento Esperado:
O dropdown deve exibir a lista de clientes em ordem correta, começando pelo primeiro registro, para que o usuário possa visualizar os nomes dos clientes e selecionar corretamente. Após a seleção, o Voyager deve salvar apenas o ID do cliente.

Comportamento Observado:
A lista de clientes começa a partir do último registro na tabela, e as chaves das opções estão incorretamente sincronizadas com o índice de cada item.

Informações Adicionais:

Versão do Voyager: 1.7
Versão do Laravel: 8.83
Versão do MySQL: 5.7 / 8.0
Navegador: Chrome / Firefox
Sistema Operacional: [informe o SO utilizado, se relevante]

Código Relacionado (Select Dropdown no Blade):

blade

@if(isset($options->relationship))
@if( !method_exists( $dataType->model_name, \Illuminate\Support\Str::camel($row->field) ) )

{{ __('voyager::form.field_select_dd_relationship', ['method' => \Illuminate\Support\Str::camel($row->field).'()', 'class' => $dataType->model_name]) }}


@endif

@if( method_exists( $dataType->model_name, \Illuminate\Support\Str::camel($row->field) ) )
    <?php $selected_value = old($row->field, $dataTypeContent->{$row->field}); ?>
    <select class="form-control select2" name="{{ $row->field }}">
        <?php $default = (isset($options->default) && !isset($dataTypeContent->{$row->field})) ? $options->default : null; ?>
        @if(isset($options->options))
            <?php $optionsList = array_values((array)$options->options); ?>
            <optgroup label="{{ __('voyager::generic.custom') }}">
            @foreach($optionsList as $chave => $option)
                <option value="{{ $chave }}" @if($default == $chave && $selected_value === NULL) selected="selected" @endif @if((string)$selected_value == (string)$chave) selected="selected" @endif>{{ $option }}</option>
            @endforeach
            </optgroup>
        @endif
    </select>
@else
    <select class="form-control select2" name="{{ $row->field }}"></select>

Captura de tela 2024-11-04 103250

@endif

@else

@endif

Possível Causa Suspeita:
Parece que a função array_values ou a estrutura de foreach no Blade não está reindexando corretamente as chaves do array, o que resulta em uma listagem incorreta no dropdown.

Solução ou Sugestão de Correção:
Realinhar as chaves do array $optionsList ou ajustar o método de obtenção das opções de relacionamento para que inicie corretamente pelo primeiro registro. Outra possibilidade é verificar o método de ordenação no backend que fornece os dados para o campo de relacionamento.

Steps to reproduce

Captura de tela 2024-11-04 111328

Expected behavior

Captura de tela 2024-11-04 111442

Screenshots

Captura de tela 2024-11-04 103250
Captura de tela 2024-11-04 103250_2

Additional context

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant