Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Como obter DESCRIÇÃO. Exemplo UNIDADE B Como eu faço p/ obter a descrição: Exs.: UNIDADE A, UNIDADE B, UNIDADE C... Eu sei como obter o id. Uso adianti/studio 5 e tema 4. ...
CN
Como obter DESCRIÇÃO. Exemplo UNIDADE B  
Como eu faço p/ obter a descrição: Exs.: UNIDADE A, UNIDADE B, UNIDADE C... Eu sei como obter o id. Uso adianti/studio 5 e tema 4.

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (4)


NR

Cesar, instancie a classe SystemUnit passando o id como parâmetro:
  1. <?php
  2. $unit = new SystemUnit($unit_id);
  3. echo $unit->name;
  4. ?>
CN

//dessa forma, obtenho o id normalmente no campo
$UNIDADE_OPERACIONAL->setValue(TSession::getValue('userunitid'));

AGORA
// quando eu faço isso no meu form (class TbentradasFormList extends TPage), dá erro (ver abaixo)

$unit = new SystemUnit(TSession::getValue('userunitid'));
$UNIDADE_OPERACIONAL->setValue($unit->name);


TELA DE ERRO
Exceção

Sem transação ativa com a base de dados: AdiantiDatabaseTRecord::load system_unit

File: /lib/adianti/database/TRecord.php : 47
AdiantiDatabaseTRecord->load(2)
File: /app/model/admin/SystemUnit.class.php : 24
AdiantiDatabaseTRecord->__construct(2,1)
File: /app/control/igrejas_pp/TbentradasFormList.class.php : 65
SystemUnit->__construct(2)
File: /lib/adianti/core/AdiantiCoreApplication.php : 60
TbentradasFormList->__construct(TbentradasFormList)
File: /engine.php : 36
AdiantiCoreAdiantiCoreApplication::run(1)
File: /engine.php : 55
TApplication::run(1)
NR

O erro é porque você está fazendo uma busca no banco e não abriu transação.

Se quiser gravar a descrição na sessão, sugiro fazer isso na função onSave da classe LoginForm, que é o local em que os demais dados da sessão também são gravados.
CN


SOLUÇÃO:

LoginForm.class.php

public static function onLogin($param)
{
$ini = AdiantiApplicationConfig::get();

try
{
TTransaction::open('permission');
$data = (object) $param;

if (empty($data->login))
{
throw new Exception( AdiantiCoreTranslator::translate('The field ^1 is required', _t('Login')) );
}

if (empty($data->password))
{
throw new Exception( AdiantiCoreTranslator::translate('The field ^1 is required', _t('Password')) );
}

$user = SystemUser::authenticate( $data->login, $data->password );
if ($user)
{
TSession::regenerate();
$programs = $user->getPrograms();
$programs['LoginForm'] = TRUE;

TSession::setValue('logged', TRUE);
TSession::setValue('login', $data->login);
TSession::setValue('userid', $user->id);
TSession::setValue('usergroupids', $user->getSystemUserGroupIds());
TSession::setValue('userunitids', $user->getSystemUserUnitIds());
TSession::setValue('unidade_operacional', $unit->name); //CÓDIGO INSERIDO
TSession::setValue('username', $user->name);
TSession::setValue('usermail', $user->email);
TSession::setValue('frontpage', '');
TSession::setValue('programs',$programs);

if (!empty($user->unit))
{
TSession::setValue('userunitid',$user->unit->id);

}

if (!empty($ini['general']['multiunit']) and $ini['general']['multiunit'] == '1' and !empty($data->unit_id))
{
TSession::setValue('userunitid', $data->unit_id );
$unit = new SystemUnit(TSession::getValue('userunitid')); //CÓDIGO INSERIDO
TSession::setValue('unidade_operacional', $unit->name); //CÓDIGO INSERIDO

}

e dentro do meu formulário, coloquei

$UNIDADE_OP->setValue(TSession::getValue('unidade_operacional'));

aí, funcionou !!!

Muito obrigado Nataniel Rabaioli !!!