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

Select não esta salvando a opção #496

Open
rauan941 opened this issue Sep 1, 2019 · 8 comments
Open

Select não esta salvando a opção #496

rauan941 opened this issue Sep 1, 2019 · 8 comments

Comments

@rauan941
Copy link

rauan941 commented Sep 1, 2019

Primeira vez utilizando o Odin e me apareceu um problema que não estou conseguindo resolver

As marcas estão cadastradas, cadastro o veículo normalmente porém quando preciso editar algo ele sempre volta para a primeira opção do select, e não para a última seleção

Ex: marcas que ele lista

Audi
BMW
Chevrolet
Volkswagen - Seleciono esta
Mercedes

Salvo e assim que atualizo ele fica na primeira opção da lista, no caso Audi, meu código:

array(
'id' => 'marca', // Obrigatório
'label' => __( 'FABRICANTE', 'odin' ), // Obrigatório
'type' => 'marca', // Obrigatório
'description' => __( 'Escolha a marca do veículo', 'odin' ), // Optional
),

Se alguém souber como resolver, ou como gravar a última seleção agradeço

@luchesigui
Copy link

@rauan941, na issue #479 tem um problema parecido. No array de opções você tá colocando um id pra cada marca como no exemplo abaixo?

$marcas_options = array(
	'audi' => 'Audi',
	'bmw' => 'BMW',
	'chevrolet' => 'Chevrolet',
	'volkswagen' => 'Volkswagen',
	'mercedes' => 'Mercedes',
);

$carro_metabox->set_fields(
	array(
		array(
			'id' => 'marca', // Obrigatório
			'label' => __( 'FABRICANTE', 'odin' ), // Obrigatório
			'type' => 'marca', // Obrigatório
			'description' => __( 'Escolha a marca do veículo', 'odin' ), // Optional
			'options' => $marcas_options,
		),
	),
);

@rauan941
Copy link
Author

rauan941 commented Oct 3, 2019

Esse é meu arquivo marca.php, vou tentar te explicar como funciona, acessando o menu Marcas, cadastro a fabricante e escolho de qual área ela é (Carro, moto ou caminhão) e ao cadastrar as informações é listadas no código acima

marca.zip

@luchesigui
Copy link

Então, mas pela descrição que você deu o problema está no post type de carros que não está salvando a marca, correto?

@rauan941
Copy link
Author

isso

@perrout
Copy link

perrout commented Oct 28, 2019

O problema está no 'type' => 'marca' pois o type deve ser do tipo select. Então para funcionar teria que colocar 'type' => 'select',

@rauan941
Copy link
Author

rauan941 commented Oct 28, 2019

O problema está no 'type' => 'marca' pois o type deve ser do tipo select. Então para funcionar teria que colocar 'type' => 'select',

Quando eu troco para select, retorna esse erro: Warning: Invalid argument supplied for foreach() in /home/comparaq/public_html/site/wp-content/themes/basic/core/classes/class-metabox.php on line 828

class-metabox.php - 282

/**
* Select field.
*
* @param string $id Field id.
* @param string $current Field current value.
* @param array $options Array with select options.
* @param array $attrs Array with field attributes.
*
* @return string HTML of the field.
*/
protected function field_select( $id, $current, $options, $attrs ) {
// If multiple add a array in the option.
$multiple = ( in_array( 'multiple', $attrs ) ) ? '[]' : '';

	$html = sprintf( '<select id="%1$s" name="%1$s%2$s"%3$s>', $id, $multiple, $this->build_field_attributes( $attrs ) );

	foreach ( $options as $key => $label ) {
		$selected = $this->is_selected( $current, $key );
		$html .= sprintf( '<option value="%s"%s>%s</option>', $key, $selected, $label );
	}

	$html .= '</select>';

	echo $html;
}

@perrout
Copy link

perrout commented Oct 28, 2019

Vc está usando qual versão do odin? Pois esse testei a v2 agora seguindo o exemplo da documentação e funcionou perfeitamente. Vc não alterou nada?

http://wpod.in/v2/Classe-Odin_Metabox.html#exemplo

@perrout
Copy link

perrout commented Oct 28, 2019

Exemplo

require_once get_template_directory() . '/core/classes/class-metabox.php';

function marcas_metabox_example() {

$marcas_options = array(
    'audi' => 'Audi',
    'bmw' => 'BMW',
    'chevrolet' => 'Chevrolet',
    'volkswagen' => 'Volkswagen',
    'mercedes' => 'Mercedes',
);

$marcas_metabox = new Odin_Metabox(
    'marcas', // Slug/ID of the Metabox (Required)
    'Marcas', // Metabox name (Required)
    'post', // Slug of Post Type (Optional)
    'normal', // Context (options: normal, advanced, or side) (Optional)
    'high' // Priority (options: high, core, default or low) (Optional)
);

$marcas_metabox->set_fields(
    array(
        /**
         * Default input examples.
         */

        // Select field.
        array(
            'id'          => 'test_select', // Required
            'label'       => __( 'Marcas', 'odin' ), // Required
            'type'        => 'select', // Required
            'attributes' => array(
                'multiple' => true
            ),
            'description' => __( 'Selecione uma marca', 'odin' ), // Optional
            'options' => $marcas_options
        ),
    )
);

}

add_action( 'init', 'marcas_metabox_example', 1 );

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

No branches or pull requests

3 participants