Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

serginho_pv

Combo não exibe nome do Estado - CakePHP

Recommended Posts

Olá. Através do bake, criei um formulário para incluir um Município. Entretanto, o bake ao gerar o formulário, exibe o id do estado e não o nome dele. Como faço para que na como apareça o nome e não o id do Estado? Se possível, gostaria de alterar a label de Uf para Estado e de nom municipio para município.

A tela exibida está em anexo (Sem título.png).

Abaixo, o script da view add.ctp

<div class="municipios form">
<?php echo $this->Form->create('Município'); ?>
	<fieldset>
		<legend><?php echo __('Incluir Município'); ?></legend>
	<?php
		echo $this->Form->input('uf_id');
		echo $this->Form->input('nom_municipio');
	?>
	</fieldset>
<?php echo $this->Form->end(__('Enviar')); ?>
</div>
<div class="actions">
	<h3><?php echo __('Ações'); ?></h3>
	<ul>

		<li><?php echo $this->Html->link(__('Listar Municípios'), array('action' => 'index')); ?></li>
		<li><?php echo $this->Html->link(__('Listar Estados'), array('controller' => 'ufs', 'action' => 'index')); ?> </li>
		<li><?php echo $this->Html->link(__('Novo Estado'), array('controller' => 'ufs', 'action' => 'add')); ?> </li>
		<li><?php echo $this->Html->link(__('Listar Endereços'), array('controller' => 'enderecos', 'action' => 'index')); ?> </li>
		<li><?php echo $this->Html->link(__('Novo Endereço'), array('controller' => 'enderecos', 'action' => 'add')); ?> </li>
	</ul>
</div>

Model Municipio:

<?php
App::uses('AppModel', 'Model');
/**
 * Municipio Model
 *
 * @property Uf $Uf
 * @property Endereco $Endereco
 */
class Municipio extends AppModel {

/**
 * Validation rules
 *
 * @var array
 */
	public $validate = array(
		'uf_id' => array(
			'numeric' => array(
				'rule' => array('numeric'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
		'nom_municipio' => array(
			'notEmpty' => array(
				'rule' => array('notEmpty'),
				//'message' => 'Your custom message here',
				//'allowEmpty' => false,
				//'required' => false,
				//'last' => false, // Stop validation after this rule
				//'on' => 'create', // Limit validation to 'create' or 'update' operations
			),
		),
	);

	//The Associations below have been created with all possible keys, those that are not needed can be removed

/**
 * belongsTo associations
 *
 * @var array
 */
	public $belongsTo = array(
		'Uf' => array(
			'className' => 'Uf',
			'foreignKey' => 'uf_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		)
	);

/**
 * hasMany associations
 *
 * @var array
 */
	public $hasMany = array(
		'Endereco' => array(
			'className' => 'Endereco',
			'foreignKey' => 'municipio_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		)
	);

}

Abaixo o script utilizado para a criação das tabelas:

DROP TABLE IF EXISTS `ufs`;
CREATE TABLE IF NOT EXISTS `ufs` (
  `id` int(10) unsigned NOT NULL COMMENT 'codigo fornecido pelo IBFE',
  `nom_estado` varchar(40) DEFAULT NULL COMMENT 'nome do estado',
  `sigla` varchar(2) DEFAULT NULL COMMENT 'sigla do estado'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;
 
 
DROP TABLE IF EXISTS `municipios`;
CREATE TABLE IF NOT EXISTS `municipios` (
  `id` varchar(7) NOT NULL COMMENT 'codigo do municipio fornecido pelo IBGE',
  `uf_id` int(10) unsigned NOT NULL,
  `nom_municipio` varchar(50) NOT NULL COMMENT 'nome do municipio'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0;

 

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resposta enviada por Paulo Rodrigues - BH/MG

O nome do label você pode incluir no segundo parâmetro, assim:

echo $this->Form->input('uf_id', array('label' => 'Estado'));
echo $this->Form->input('nom_municipio', array('label' => 'Município'));

E para o nome do estado, no seu model Uf é possível definir o atributo displayField que é o seu campo de exibição padrão:

class Uf extends AppModel {
public $displayField = 'nom_estado';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.