MC
Metodo onDelete parâmetro $key = Undefined index: key
Boa noite a todos, tenho um formulário de cadastro e implementei um botão de excluir, porém na action delete não está chegando o parâmetro $key, gostaria de saber onde errei, utilizando o var_dump verifiquei que na linha 202 o parâmetro desaparece, Obrigado
- <?php
- <?php
- /**
- * Imagem_Marca do gadoForm
- * @author <your name here>
- */
- class Imagem_MarcagadoForm extends TPage
- {
- protected $form; // form
- /**
- * Form constructor
- * @param $param Request
- */
- public function __construct( $param )
- {
- parent::__construct();
- // creates the form
- $this->form = new TQuickForm('form_Imagem_Marcagado');
- $this->form->class = 'tform'; // change CSS class
- $this->form = new BootstrapFormWrapper($this->form);
- $this->form->style = 'display: table;width:100%'; // change style
- // define the form title
- $this->form->setFormTitle('Imagem_Marcagado');
- // create the form fields
- $id = new TEntry('id');
- $nome = new TSlim('nome');
- $iniciais = new TEntry('iniciais');
- $propriedade_id = new TEntry('propriedade_id');
- $nome->setSize( '100%', 100);
- $nome->setDataProperties(['label'=>'Upload marcador']);
- // add the fields
- $this->form->addQuickField('Id', $id, '100%' );
- $this->form->addQuickField('Nome', $nome, '100%' );
- $this->form->addQuickField('Iniciais', $iniciais, '100%' , new TRequiredValidator);
- $this->form->addQuickField('Propriedade', $propriedade_id, '50%' );
- if (!empty($id))
- {
- $id->setEditable(FALSE);
- }
- if (!empty($propriedade_id))
- {
- $propriedade_id->setEditable(FALSE);
- }
- // create the form actions
- $btn = $this->form->addQuickAction(_t('Save'), new TAction(array($this, 'onSave')), 'fa:floppy-o');
- $btn2 = $this->form->addQuickAction(_t('Delete'), new TAction(array($this, 'onDelete')), 'fa:trash-o red fa-lg');
- $btn->class = 'btn btn-sm btn-primary';
- $this->form->addQuickAction('Voltar', new TAction(['PropriedadeForm', 'onEdit'] ,['key'=>TSession::getValue('propriedade')]), 'fa:table blue');
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 90%';
- // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add(TPanelGroup::pack('Title', $this->form));
- parent::add($container);
- }
- /**
- * Save form data
- * @param $param Request
- */
- public function onSave( $param )
- {
- try
- {
- TTransaction::open('permission'); // open a transaction
- /**
- // Enable Debug logger for SQL operations inside the transaction
- TTransaction::setLogger(new TLoggerSTD); // standard output
- TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
- **/
- $this->form->validate(); // validate form data
- $object = new Imagem_Marcagado;
- $data = $this->form->getData(); // get form data as array
- $object->fromArray( (array) $data); // load the object with data
- // Get posted data
- $imagem = Slim::getImages();
- $propriedade = TSession::getValue('propriedade');
- // No image found under the supplied input name
- if ($imagem)
- {
- $imagem = $imagem[0];
- // save output data if set
- if (isset($imagem['output']['data']))
- {
- // Save the file
- $name = $imagem['output']['name'];
- // We'll use the output crop data
- $data = $imagem['output']['data'];
- $output = Slim::saveFile($data, $name, 'images/marcagado/', false);
- $object->nome = $output['path'];
- }
- }
- $object->propriedade_id = $propriedade;
- if (empty($object->nome))
- {
- throw new Exception('Campo nome é obrigatório');
- }
- $object->store(); // save the object
- // get the generated id
- //$data->id = $object->id;
- $this->form->setData($data); // fill form data
- TTransaction::close(); // close the transaction
- //new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
- new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'), new TAction(['PropriedadeForm', 'onEdit'] ,['key'=>TSession::getValue('propriedade')]) );
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- $this->form->setData( $this->form->getData() ); // keep form data
- TTransaction::rollback(); // undo all pending operations
- }
- }
- /**
- * Clear form data
- * @param $param Request
- */
- public function onClear( $param )
- {
- $this->form->clear(TRUE);
- }
- /**
- * Load object to form data
- * @param $param Request
- */
- public function onEdit( $param )
- {
- try
- {
- if (isset($param['key']))
- {
- $key = $param['key']; // get the parameter $key
- TTransaction::open('permission'); // open a transaction
- $object = new Imagem_Marcagado($key); // instantiates the Active Record
- $this->form->setData($object); // fill the form
- TTransaction::close(); // close the transaction
- }
- else
- {
- $this->form->clear(TRUE);
- }
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage()); // shows the exception error message
- TTransaction::rollback(); // undo all pending operations
- }
- }
- public function onDelete($param)
- {
- // define the delete action
- $action = new TAction(array($this, 'Delete'));
- $action->setParameters($param); // pass the key parameter ahead
- // shows a dialog to the user
- new TQuestion(TAdiantiCoreTranslator::translate('Do you really want to delete ?'), $action);
- }
- /**
- * Delete a record
- */
- public function Delete($param)
- {
- try
- {
- //$key = $param['key']; // get the parameter $key
- TTransaction::open('permission'); // open a transaction with database
- $object = new Imagem_Marcagado($key, FALSE); // instantiates the Active Record
- $object->delete(); // deletes the object from the database
- TTransaction::close(); // close the transaction
- new TMessage('info', TAdiantiCoreTranslator::translate('Record deleted')); // success message
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', '<b>Error</b> ' . $e->getMessage()); // shows the exception error message
- TTransaction::rollback(); // undo all pending operations
- }
- }
- }
- ?>
A linha onde a variável $key é atribuída está comentada:
Obrigado pela ajuda, descomentei a linha 200 e como havia falado anteriormente o valor não chega no parâmetro, ainda continua apresentando erro e o registro não é apagado.
Notice: Undefined index: key in C:wampwwwpatrulharural2appcontrolpatrulhaincludesImagem_MarcagadoForm.class.php on line 200
Se substituo a linha 202 e mudo o parâmetro $key para $param['id'] conforme abaixo, o registro é apagado.
$object = new Imagem_Marcagado($param['id'], FALSE)
Obrigado
Agora que vi que você está chamando a função Delete através de um botão no formulário. Acontece que a chave "key" é usada pelas ações da datagrid. Ao usar um botão em um formulário essa chave não é utilizada e a variável $param vai conter os dados dos campos do formulário.