JF
Dúvida de salvamento em lote
Bom dia pessoal... preciso alterar objetos em lote como o exemplo do tutor ProductUpdateList (adianti.com.br/framework_files/tutor/index.php?class=ProductUpdateLi) ; porém n meu caso eu crio dois objetos, então quando eu capturo os dados com o "$field->getValue()" os dois assumem o mesmo valor, o que é lógico pq eu não estou sabendo como capturar os valor individuais. Pergunta como pega os dados individualmente tipo: $data = $this->formgrid->getFields(); $nome = $data->nome...ou algo parecido, alguém sabe como fazer ?
estou salvando como no exemplo do tutor abaixo.
Obrigado
estou salvando como no exemplo do tutor abaixo.
Obrigado
- <?php
- public function onSaveCollection()
- {
- $data = $this->formgrid->getData(); // get datagrid form data
- $this->formgrid->setData($data); // keep the form filled
- try
- {
- // open transaction
- TTransaction::open('permission');
- // iterate datagrid form objects
- foreach ($this->formgrid->getFields() as $name => $field)
- {
- if ($field instanceof TCheckButton)
- {
- $parts = explode('_', $name);
- $id = end($parts);
- $object = SystemUserGroupProgram::find($id);
- if ($object)
- {
- //$object->acesso = $field->acesso;
- $object->acesso = $field->getValue();
- $object->store();
- }
- }
- }
- new TMessage('info', AdiantiCoreTranslator::translate('Records updated'));
- // close transaction
- TTransaction::close();
- }
- catch (Exception $e)
- {
- // show the exception message
- new TMessage('error', $e->getMessage());
- }
- }//onSaveCollection
- ?>
Pra ser mais claro, é uma tela de permissão onde eu tenho que capturar por checkbox o acesso, permissão e deleção... porém quando eu salvo os dados ele salva todos os valores iguais ao deleção que é o último que é salvo. Vou postar o código todo
A função $field->getValue() retorna o valor do campo atual dentro do foreach. Como você está atribuindo esse valor aos 3 atributos do objeto, todos terão sempre o valor do último campo. Adicione um if dentro do foreach para passar somente 1 vez por "linha" e depois pegue o valor dos outros 2 campos via getData:
Obrigado mesmo Nataniel deu certo agora...grande abraço.
Estou fazendo umas alterações nessa tela e vi a necessidade de ter algumas TEntry porém só consigo capturar os valores do Formgrid, os do form quando tento capturar com $this->form->getData() trás os dados vazios. como faço ?