serginho_pv 0 Denunciar post Postado Dezembro 25, 2014 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
serginho_pv 0 Denunciar post Postado Dezembro 26, 2014 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