RC
Datagrid não está sendo populada quando vou editar um registro
Fechado
Pessoal preciso de um help.
Criei um formulário onde no mesmo eu cadastro uma categoria e suas respectivas subcategorias em uma datagrid.
Quando eu clico em salvar, salva com sucesso no banco e seta as informações no formulário. O problema está quando vou editar um registro! O campo ID e Categoria vem preenchidos, mas as subcategorias não traz...
Vou enviar um print da tela e o código fonte do método onEdit do formulário e o seu respectivo model.
Obs: Peguei este exemplo do controller SystemUserForm do template ERPII...
Model Categoria:
Criei um formulário onde no mesmo eu cadastro uma categoria e suas respectivas subcategorias em uma datagrid.
Quando eu clico em salvar, salva com sucesso no banco e seta as informações no formulário. O problema está quando vou editar um registro! O campo ID e Categoria vem preenchidos, mas as subcategorias não traz...
Vou enviar um print da tela e o código fonte do método onEdit do formulário e o seu respectivo model.
Obs: Peguei este exemplo do controller SystemUserForm do template ERPII...
- <?php
- function onEdit($param) {
- try {
- if (isset($param['key'])) {
- // get the parameter $key
- $key = $param['key'];
- TTransaction::open('permission');
- $object = new Categoria($key);
- $object->programs = $object->getEstoqueCategoriaSubcategorias();
- //var_dump($object); die();
- $this->form->setData($object);
- // close the transaction
- TTransaction::close();
- } else {
- $this->form->clear();
- }
- } catch (Exception $e) {
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- TTransaction::rollback();
- }
- }
- ?>
Model Categoria:
- <?php
- /**
- * Categoria Active Record
- * @author <Ricelli Carvalho>
- */
- class Categoria extends TRecord
- {
- const TABLENAME = 'estoque_categoria';
- const PRIMARYKEY= 'id';
- const IDPOLICY = 'max'; // {max, serial}
- private $estoque_categoria_subcategorias = array();
- public function __construct(1566 = NULL)
- {
- parent::__construct(1566);
- parent::addAttribute('respcadastro');
- parent::addAttribute('datacadastro');
- parent::addAttribute('respalteracao');
- parent::addAttribute('dataalteracao');
- parent::addAttribute('categoria');
- }
- public function addEstoqueCategoriaSubcategoria(Subcategoria $object)
- {
- //var_dump($object); die();
- $this->estoque_categoria_subcategorias[] = $object;
- }
- public function getEstoqueCategoriaSubcategorias()
- {
- return $this->estoque_categoria_subcategorias;
- }
- /**
- * Reset aggregates
- */
- public function clearParts()
- {
- $this->estoque_categoria_subcategorias = array();
- }
- /**
- * Load the object and its aggregates
- * @param 1566 object ID
- */
- public function load(1566)
- {
- // load the related System_user_program objects
- $repository = new TRepository('CategoriaSubcategoria');
- $criteria = new TCriteria;
- $criteria->add(new TFilter('estoque_categoria_id', '=', 1566));
- //$system_user_system_user_programs = $repository->load($criteria);
- $estoque_categoria_estoque_categoria_subcategorias = $repository->load($criteria);
- if ($estoque_categoria_estoque_categoria_subcategorias)
- {
- foreach ($estoque_categoria_estoque_categoria_subcategorias as $estoque_categoria_estoque_categoria_subcategoria)
- {
- $estoque_categoria_subcategoria = new Subcategoria( $estoque_categoria_estoque_categoria_subcategoria->system_program_id );
- $this->addEstoqueCategoriaSubcategoria($estoque_categoria_subcategoria);
- }
- }
- // load the object itself
- return parent::load(1566);
- }
- /**
- * Store the object and its aggregates
- */
- public function store()
- {
- // store the object itself
- parent::store();
- $criteria = new TCriteria;
- $criteria->add(new TFilter('estoque_categoria_id', '=', $this->id));
- $repository = new TRepository('CategoriaSubcategoria');
- $repository->delete($criteria);
- // store the related System_userSystem_user_program objects
- if ($this->estoque_categoria_subcategorias)
- {
- foreach ($this->estoque_categoria_subcategorias as $estoque_categoria_subcategoria)
- {
- $estoque_categoria_estoque_categoria_subcategoria = new CategoriaSubcategoria;
- $estoque_categoria_estoque_categoria_subcategoria->estoque_subcategoria_id = $estoque_categoria_subcategoria->id;
- $estoque_categoria_estoque_categoria_subcategoria->estoque_categoria_id = $this->id;
- $estoque_categoria_estoque_categoria_subcategoria->store();
- }
- }
- }
- /**
- * Delete the object and its aggregates
- * @param 1566 object ID
- */
- public function delete(1566 = NULL)
- {
- // delete the related System_userSystem_user_program objects
- 1566 = isset(1566) ? 1566 : $this->id;
- $repository = new TRepository('CategoriaSubcategoria');
- $criteria = new TCriteria;
- $criteria->add(new TFilter('estoque_categoria_id', '=', 1566));
- $repository->delete($criteria);
- // delete the object itself
- parent::delete(1566);
- }
- /**
- * Return the programs the user has permission to run
- */
- public function getPrograms()
- {
- $subcategorias = array();
- foreach( $this->getEstoqueCategoriaSubcategorias() as $subc )
- {
- $subcategorias[$subc->subcategoria] = true;
- }
- return $subcategorias;
- }
- }
- ?>
Oi Ricelli
Não é datagrid é multifield poste o código de sua classe control, no model falta o private $subcategorias = array();
Obrigado Felipe Cortez, pela disposição em querer ajudar-me a solucionar esse problema.
Vou postar logo abaixo o código da minha classe control.
Você falou que no meu model Categoria falta o
Classe control: CategoriaFormView
Vou postar também o model CategoriaSubcategoria, que faz a relação entre a tabela Categoria e subcategoria:
Já reescrevi tudo novamente, bati de todo lado e não encontrei o que está faltando para carregar os dados no multifield! Me ajudem ai pessoal, a solucionar este problema...
Deve ser o nome dos atributos que não batem, veja esse exemplo:
www.adianti.com.br/framework_files/tutor/index.php?class=CustomerFor