A
Preencher TDBMultiSearch no evente onEdit
Olá pessoal, gostaria de saber qual seria o modo mais adequado de preencher um TDBMultiSearch, que uso para selecionar a cidade.
Hoje estou fazendo assim:
Porém, na parte, o membro STATE tem visibilidade privada e o acesso dessa forma não é adequado, apesar de funcionar.
Minha dúvida é se há uma forma melhor (correta) de implementar isso.
Grato pela atenção dispensada.
Hoje estou fazendo assim:
- <?php
- public function onEdit($param)
- {
- try
- {
- if (isset($param['key']))
- {
- TTransaction::open($this->database);
- $class = $this->activeRecord;
- $object = new $class($param['key']);
- // treats City
- $city = new City($object->city_id);
- $object->city_id = [ $city->id => $city->name.' / '.$city->state->abbreviation ];
- $this->form->setData($object);
- TTransaction::close();
- }
- else
- {
- $this->form->clear();
- }
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- ?>
Porém, na parte
- <?php $object->city_id = [ $city->id => $city->name.' / '.$city->state->abbreviation ]; ?>
Minha dúvida é se há uma forma melhor (correta) de implementar isso.
Grato pela atenção dispensada.
Acho que está correto desta maneira. Há um exemplo no tutor que faz praticamente a mesma coisa.
Quanto ao atributo privado não se preocupe, pois ao acessar $city->state você não está acessando diretamente a varíável state. O framework identifica que existe uma função get_state e chama a função ao invés de acessar a variável diretamente.
Muito obrigado Nataniel.
Tenha um ótimo dia.