Erro no onDetailEdit (Notice: Undefined index:) Tenho um form mestre/detalhe, e ao clicar em um item do grid do detalhe para editar ele me retorna: Notice: Undefined index: recuperacao_pri_bi in /var/www/html/cca/app/control/notas/NotasForm.php on line 278 Alguém pode me ajudar? Segue código: ...
ET
Erro no onDetailEdit (Notice: Undefined index:)  
Tenho um form mestre/detalhe, e ao clicar em um item do grid do detalhe para editar ele me retorna: Notice: Undefined index: recuperacao_pri_bi in /var/www/html/cca/app/control/notas/NotasForm.php on line 278

Alguém pode me ajudar?

Segue código:
 
  1. <?php
 
  1. <?php
  2. /**
  3. * NotasForm Master/Detail
  4. * @author <your name here>
  5. */
  6. class NotasForm extends TPage
  7. {
  8. protected $form; // form
  9. protected $detail_list;
  10. /**
  11. * Page constructor
  12. */
  13. public function __construct()
  14. {
  15. parent::__construct();
  16. // creates the form
  17. $this->form = new BootstrapFormBuilder('form_Notas');
  18. $this->form->setFormTitle('Notas');
  19. // master fields
  20. $id = new TEntry('id');
  21. $aluno_id = new TDBUniqueSearch('aluno_id', 'cca', 'Aluno', 'id', 'nome');
  22. $matricula_id = new TDBUniqueSearch('matricula_id', 'cca', 'Matricula', 'id', 'nome_aluno_id');
  23. $ano_letivo_id = new TDBUniqueSearch('ano_letivo_id', 'cca', 'Matricula', 'id', 'ano_letivo');
  24. $matricula_id->setMinLength(1);
  25. $id->setSize(100);
  26. // detail fields
  27. $detail_uniqid = new THidden('detail_uniqid');
  28. $detail_id = new THidden('detail_id');
  29. $detail_disciplinas = new TCombo('detail_disciplinas');
  30. $detail_nota1_primeiro_bi = new TEntry('detail_nota1_primeiro_bi');
  31. $detail_nota2_primeiro_bi = new TEntry('detail_nota2_primeiro_bi');
  32. $detail_nota3_primeiro_bi = new TEntry('detail_nota3_primeiro_bi');
  33. $detail_recuperacao_pri_bi = new TEntry('detail_recuperacao_pri_bi');
  34. $detail_nota1_segundo_bi = new TEntry('detail_nota1_segundo_bi');
  35. $detail_nota2_segundo_bi = new TEntry('detail_nota2_segundo_bi');
  36. $detail_nota3_segundo_bi = new TEntry('detail_nota3_segundo_bi');
  37. $detail_recuperacao_seg_bi = new TEntry('detail_recuperacao_seg_bi');
  38. $detail_nota1_terceiro_bi = new TEntry('detail_nota1_terceiro_bi');
  39. $detail_nota2_terceiro_bi = new TEntry('detail_nota2_terceiro_bi');
  40. $detail_nota3_terceiro_bi = new TEntry('detail_nota3_terceiro_bi');
  41. $detail_recuperacao_ter_bi = new TEntry('detail_recuperacao_ter_bi');
  42. $detail_nota1_quarto_bi = new TEntry('detail_nota1_quarto_bi');
  43. $detail_nota2_quarto_bi = new TEntry('detail_nota2_quarto_bi');
  44. $detail_nota3_quarto_bi = new TEntry('detail_nota3_quarto_bi');
  45. $detail_recuperacao_qua_bi = new TEntry('detail_recuperacao_qua_bi');
  46. $detail_recuperacao_final = new TEntry('detail_recuperacao_final');
  47. $detail_media_final = new TEntry('detail_media_final');
  48. // add the combo filds detail_disciplinas
  49. $detail_disciplinas->addItems(array('Português'=>'Português',
  50. 'Matemática'=>'Matemática',
  51. 'Ciências'=>'Ciências',
  52. 'História'=>'História',
  53. 'Geografia'=>'Geografia',
  54. 'Inglês'=>'Inglês',
  55. 'Arte'=>'Arte',
  56. 'Cidadania'=>'Cidadania',
  57. 'Religião'=>'Religião',
  58. 'Ed. Fídica'=>'Ed. Fídica',
  59. 'Química'=>'Química',
  60. 'Física'=>'Física',
  61. 'Biologia'=>'Biologia',
  62. 'Sociologia'=>'Sociologia',
  63. 'Filosofia'=>'Filosofia',
  64. 'Desenho'=>'Desenho'
  65. ));
  66. if (!empty($id))
  67. {
  68. $id->setEditable(FALSE);
  69. }
  70. // master fields
  71. $this->form->addFields( [new TLabel('Id')], [$id] );
  72. $this->form->addFields( [new TLabel('Aluno Id')], [$aluno_id] );
  73. $this->form->addFields( [new TLabel('Matricula Id')], [$matricula_id] );
  74. $this->form->addFields( [new TLabel('Ano Letivo Id')], [$ano_letivo_id] );
  75. // detail fields
  76. $this->form->addContent( ['<h4>Details</h4><hr>'] );
  77. $this->form->addFields( [$detail_uniqid] );
  78. $this->form->addFields( [$detail_id] );
  79. $this->form->addFields( [new TLabel('Disciplinas')], [$detail_disciplinas] );
  80. $this->form->addFields( [new TLabel('Nota1 Primeiro Bi')], [$detail_nota1_primeiro_bi] );
  81. $this->form->addFields( [new TLabel('Nota2 Primeiro Bi')], [$detail_nota2_primeiro_bi] );
  82. $this->form->addFields( [new TLabel('Nota3 Primeiro Bi')], [$detail_nota3_primeiro_bi] );
  83. $this->form->addFields( [new TLabel('Recuperacao Pri Bi')], [$detail_recuperacao_pri_bi] );
  84. $this->form->addFields( [new TLabel('Nota1 Segundo Bi')], [$detail_nota1_segundo_bi] );
  85. $this->form->addFields( [new TLabel('Nota2 Segundo Bi')], [$detail_nota2_segundo_bi] );
  86. $this->form->addFields( [new TLabel('Nota3 Segundo Bi')], [$detail_nota3_segundo_bi] );
  87. $this->form->addFields( [new TLabel('Recuperacao Seg Bi')], [$detail_recuperacao_seg_bi] );
  88. $this->form->addFields( [new TLabel('Nota1 Terceiro Bi')], [$detail_nota1_terceiro_bi] );
  89. $this->form->addFields( [new TLabel('Nota2 Terceiro Bi')], [$detail_nota2_terceiro_bi] );
  90. $this->form->addFields( [new TLabel('Nota3 Terceiro Bi')], [$detail_nota3_terceiro_bi] );
  91. $this->form->addFields( [new TLabel('Recuperacao Ter Bi')], [$detail_recuperacao_ter_bi] );
  92. $this->form->addFields( [new TLabel('Nota1 Quarto Bi')], [$detail_nota1_quarto_bi] );
  93. $this->form->addFields( [new TLabel('Nota2 Quarto Bi')], [$detail_nota2_quarto_bi] );
  94. $this->form->addFields( [new TLabel('Nota3 Quarto Bi')], [$detail_nota3_quarto_bi] );
  95. $this->form->addFields( [new TLabel('Recuperacao Qua Bi')], [$detail_recuperacao_qua_bi] );
  96. $this->form->addFields( [new TLabel('Recuperacao Final')], [$detail_recuperacao_final] );
  97. $this->form->addFields( [new TLabel('Media Final')], [$detail_media_final] );
  98. $add = TButton::create('add', [$this, 'onDetailAdd'], 'Register', 'fa:plus-circle green');
  99. $add->getAction()->setParameter('static','1');
  100. $this->form->addFields( [], [$add] );
  101. $this->detail_list = new BootstrapDatagridWrapper(new TDataGrid);
  102. $this->detail_list->setId('NotasItem_list');
  103. $this->detail_list->generateHiddenFields();
  104. $this->detail_list->style = "min-width: 700px; width:100%;margin-bottom: 10px";
  105. // items
  106. $this->detail_list->addColumn( new TDataGridColumn('uniqid', 'Uniqid', 'center') )->setVisibility(false);
  107. $this->detail_list->addColumn( new TDataGridColumn('id', 'Id', 'center') )->setVisibility(false);
  108. $this->detail_list->addColumn( new TDataGridColumn('disciplinas', 'Disciplinas', 'left', 100) );
  109. $this->detail_list->addColumn( new TDataGridColumn('nota1_primeiro_bi', 'Nota1 Primeiro Bi', 'left', 100) );
  110. $this->detail_list->addColumn( new TDataGridColumn('nota2_primeiro_bi', 'Nota2 Primeiro Bi', 'left', 100) );
  111. $this->detail_list->addColumn( new TDataGridColumn('nota3_primeiro_bi', 'Nota3 Primeiro Bi', 'left', 100) );
  112. $this->detail_list->addColumn( new TDataGridColumn('recuperacao_pri_bi', 'Recuperacao Pri Bi', 'left', 100) );
  113. $this->detail_list->addColumn( new TDataGridColumn('nota1_segundo_bi', 'Nota1 Segundo Bi', 'left', 100) );
  114. $this->detail_list->addColumn( new TDataGridColumn('nota2_segundo_bi', 'Nota2 Segundo Bi', 'left', 100) );
  115. $this->detail_list->addColumn( new TDataGridColumn('nota3_segundo_bi', 'Nota3 Segundo Bi', 'left', 100) );
  116. $this->detail_list->addColumn( new TDataGridColumn('recuperacao_seg_bi', 'Recuperacao Seg Bi', 'left', 100) );
  117. $this->detail_list->addColumn( new TDataGridColumn('nota1_terceiro_bi', 'Nota1 Terceiro Bi', 'left', 100) );
  118. $this->detail_list->addColumn( new TDataGridColumn('nota2_terceiro_bi', 'Nota2 Terceiro Bi', 'left', 100) );
  119. $this->detail_list->addColumn( new TDataGridColumn('nota3_terceiro_bi', 'Nota3 Terceiro Bi', 'left', 100) );
  120. $this->detail_list->addColumn( new TDataGridColumn('recuperacao_ter_bi', 'Recuperacao Ter Bi', 'left', 100) );
  121. $this->detail_list->addColumn( new TDataGridColumn('nota1_quarto_bi', 'Nota1 Quarto Bi', 'left', 100) );
  122. $this->detail_list->addColumn( new TDataGridColumn('nota2_quarto_bi', 'Nota2 Quarto Bi', 'left', 100) );
  123. $this->detail_list->addColumn( new TDataGridColumn('nota3_quarto_bi', 'Nota3 Quarto Bi', 'left', 100) );
  124. $this->detail_list->addColumn( new TDataGridColumn('recuperacao_qua_bi', 'Recuperacao Qua Bi', 'left', 100) );
  125. $this->detail_list->addColumn( new TDataGridColumn('recuperacao_final', 'Recuperacao Final', 'left', 100) );
  126. $this->detail_list->addColumn( new TDataGridColumn('media_final', 'Media Final', 'left', 100) );
  127. // detail actions
  128. $action1 = new TDataGridAction([$this, 'onDetailEdit'] );
  129. $action1->setFields( ['uniqid', '*'] );
  130. $action2 = new TDataGridAction([$this, 'onDetailDelete']);
  131. $action2->setField('uniqid');
  132. // add the actions to the datagrid
  133. $this->detail_list->addAction($action1, _t('Edit'), 'fa:edit blue');
  134. $this->detail_list->addAction($action2, _t('Delete'), 'far:trash-alt red');
  135. $this->detail_list->createModel();
  136. $panel = new TPanelGroup;
  137. $panel->add($this->detail_list);
  138. $panel->getBody()->style = 'overflow-x:auto';
  139. $this->form->addContent( [$panel] );
  140. $this->form->addAction( 'Save', new TAction([$this, 'onSave'], ['static'=>'1']), 'fa:save green');
  141. $this->form->addAction( 'Clear', new TAction([$this, 'onClear']), 'fa:eraser red');
  142. // create the page container
  143. $container = new TVBox;
  144. $container->style = 'width: 100%';
  145. // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  146. $container->add($this->form);
  147. parent::add($container);
  148. }
  149. /**
  150. * Clear form
  151. * @param $param URL parameters
  152. */
  153. public function onClear($param)
  154. {
  155. $this->form->clear(TRUE);
  156. }
  157. /**
  158. * Add detail item
  159. * @param $param URL parameters
  160. */
  161. public function onDetailAdd( $param )
  162. {
  163. try
  164. {
  165. $this->form->validate();
  166. $data = $this->form->getData();
  167. /** validation sample
  168. if (empty($data->fieldX))
  169. {
  170. throw new Exception('The field fieldX is required');
  171. }
  172. **/
  173. $uniqid = !empty($data->detail_uniqid) ? $data->detail_uniqid : uniqid();
  174. $grid_data = [];
  175. $grid_data['uniqid'] = $uniqid;
  176. $grid_data['id'] = $data->detail_id;
  177. $grid_data['disciplinas'] = $data->detail_disciplinas;
  178. $grid_data['nota1_primeiro_bi'] = $data->detail_nota1_primeiro_bi;
  179. $grid_data['nota2_primeiro_bi'] = $data->detail_nota2_primeiro_bi;
  180. $grid_data['nota3_primeiro_bi'] = $data->detail_nota3_primeiro_bi;
  181. $grid_data['recuperacao_pri_bi'] = $data->detail_recuperacao_pri_bi;
  182. $grid_data['nota1_segundo_bi'] = $data->detail_nota1_segundo_bi;
  183. $grid_data['nota2_segundo_bi'] = $data->detail_nota2_segundo_bi;
  184. $grid_data['nota3_segundo_bi'] = $data->detail_nota3_segundo_bi;
  185. $grid_data['recuperacao_seg_bi'] = $data->detail_recuperacao_seg_bi;
  186. $grid_data['nota1_terceiro_bi'] = $data->detail_nota1_terceiro_bi;
  187. $grid_data['nota2_terceiro_bi'] = $data->detail_nota2_terceiro_bi;
  188. $grid_data['nota3_terceiro_bi'] = $data->detail_nota3_terceiro_bi;
  189. $grid_data['recuperacao_ter_bi'] = $data->detail_recuperacao_ter_bi;
  190. $grid_data['nota1_quarto_bi'] = $data->detail_nota1_quarto_bi;
  191. $grid_data['nota2_quarto_bi'] = $data->detail_nota2_quarto_bi;
  192. $grid_data['nota3_quarto_bi'] = $data->detail_nota3_quarto_bi;
  193. $grid_data['recuperacao_qua_bi'] = $data->detail_recuperacao_qua_bi;
  194. $grid_data['recuperacao_final'] = $data->detail_recuperacao_final;
  195. $grid_data['media_final'] = $data->detail_media_final;
  196. // insert row dynamically
  197. $row = $this->detail_list->addItem( (object) $grid_data );
  198. $row->id = $uniqid;
  199. TDataGrid::replaceRowById('NotasItem_list', $uniqid, $row);
  200. // clear detail form fields
  201. $data->detail_uniqid = '';
  202. $data->detail_id = '';
  203. $data->detail_disciplinas = '';
  204. $data->detail_nota1_primeiro_bi = '';
  205. $data->detail_nota2_primeiro_bi = '';
  206. $data->detail_nota3_primeiro_bi = '';
  207. $data->detail_recuperacao_pri_bi = '';
  208. $data->detail_nota1_segundo_bi = '';
  209. $data->detail_nota2_segundo_bi = '';
  210. $data->detail_nota3_segundo_bi = '';
  211. $data->detail_recuperacao_seg_bi = '';
  212. $data->detail_nota1_terceiro_bi = '';
  213. $data->detail_nota2_terceiro_bi = '';
  214. $data->detail_nota3_terceiro_bi = '';
  215. $data->detail_recuperacao_ter_bi = '';
  216. $data->detail_nota1_quarto_bi = '';
  217. $data->detail_nota2_quarto_bi = '';
  218. $data->detail_nota3_quarto_bi = '';
  219. $data->detail_recuperacao_qua_bi = '';
  220. $data->detail_recuperacao_final = '';
  221. $data->detail_media_final = '';
  222. // send data, do not fire change/exit events
  223. TForm::sendData( 'form_Notas', $data, false, false );
  224. }
  225. catch (Exception $e)
  226. {
  227. $this->form->setData( $this->form->getData());
  228. new TMessage('error', $e->getMessage());
  229. }
  230. }
  231. /**
  232. * Edit detail item
  233. * @param $param URL parameters
  234. */
  235. public static function onDetailEdit( $param )
  236. {
  237. $data = new stdClass;
  238. $data->detail_uniqid = $param['uniqid'];
  239. $data->detail_id = $param['id'];
  240. $data->detail_disciplinas = $param['disciplinas'];
  241. $data->detail_nota1_primeiro_bi = $param['nota1_primeiro_bi'];
  242. $data->detail_nota2_primeiro_bi = $param['nota2_primeiro_bi'];
  243. $data->detail_nota3_primeiro_bi = $param['nota3_primeiro_bi'];
  244. $data->detail_recuperacao_pri_bi = $param['recuperacao_pri_bi'];
  245. $data->detail_nota1_segundo_bi = $param['nota1_segundo_bi'];
  246. $data->detail_nota2_segundo_bi = $param['nota2_segundo_bi'];
  247. $data->detail_nota3_segundo_bi = $param['nota3_segundo_bi'];
  248. $data->detail_recuperacao_seg_bi = $param['recuperacao_seg_bi'];
  249. $data->detail_nota1_terceiro_bi = $param['nota1_terceiro_bi'];
  250. $data->detail_nota2_terceiro_bi = $param['nota2_terceiro_bi'];
  251. $data->detail_nota3_terceiro_bi = $param['nota3_terceiro_bi'];
  252. $data->detail_recuperacao_ter_bi = $param['recuperacao_ter_bi'];
  253. $data->detail_nota1_quarto_bi = $param['nota1_quarto_bi'];
  254. $data->detail_nota2_quarto_bi = $param['nota2_quarto_bi'];
  255. $data->detail_nota3_quarto_bi = $param['nota3_quarto_bi'];
  256. $data->detail_recuperacao_qua_bi = $param['recuperacao_qua_bi'];
  257. $data->detail_recuperacao_final = $param['recuperacao_final'];
  258. $data->detail_media_final = $param['media_final'];
  259. // send data, do not fire change/exit events
  260. TForm::sendData( 'form_Notas', $data, false, false );
  261. }
  262. /**
  263. * Delete detail item
  264. * @param $param URL parameters
  265. */
  266. public static function onDetailDelete( $param )
  267. {
  268. // clear detail form fields
  269. $data = new stdClass;
  270. $data->detail_uniqid = '';
  271. $data->detail_id = '';
  272. $data->detail_disciplinas = '';
  273. $data->detail_nota1_primeiro_bi = '';
  274. $data->detail_nota2_primeiro_bi = '';
  275. $data->detail_nota3_primeiro_bi = '';
  276. $data->detail_recuperacao_pri_bi = '';
  277. $data->detail_nota1_segundo_bi = '';
  278. $data->detail_nota2_segundo_bi = '';
  279. $data->detail_nota3_segundo_bi = '';
  280. $data->detail_recuperacao_seg_bi = '';
  281. $data->detail_nota1_terceiro_bi = '';
  282. $data->detail_nota2_terceiro_bi = '';
  283. $data->detail_nota3_terceiro_bi = '';
  284. $data->detail_recuperacao_ter_bi = '';
  285. $data->detail_nota1_quarto_bi = '';
  286. $data->detail_nota2_quarto_bi = '';
  287. $data->detail_nota3_quarto_bi = '';
  288. $data->detail_recuperacao_qua_bi = '';
  289. $data->detail_recuperacao_final = '';
  290. $data->detail_media_final = '';
  291. // send data, do not fire change/exit events
  292. TForm::sendData( 'form_Notas', $data, false, false );
  293. // remove row
  294. TDataGrid::removeRowById('NotasItem_list', $param['uniqid']);
  295. }
  296. /**
  297. * Load Master/Detail data from database to form
  298. */
  299. public function onEdit($param)
  300. {
  301. try
  302. {
  303. TTransaction::open('cca');
  304. if (isset($param['key']))
  305. {
  306. $key = $param['key'];
  307. $object = new Notas($key);
  308. $items = NotasItem::where('notas_id', '=', $key)->load();
  309. foreach( $items as $item )
  310. {
  311. $item->uniqid = uniqid();
  312. $row = $this->detail_list->addItem( $item );
  313. $row->id = $item->uniqid;
  314. }
  315. $this->form->setData($object);
  316. TTransaction::close();
  317. }
  318. else
  319. {
  320. $this->form->clear(TRUE);
  321. }
  322. }
  323. catch (Exception $e) // in case of exception
  324. {
  325. new TMessage('error', $e->getMessage());
  326. TTransaction::rollback();
  327. }
  328. }
  329. /**
  330. * Save the Master/Detail data from form to database
  331. */
  332. public function onSave($param)
  333. {
  334. try
  335. {
  336. // open a transaction with database
  337. TTransaction::open('cca');
  338. $data = $this->form->getData();
  339. $this->form->validate();
  340. $master = new Notas;
  341. $master->fromArray( (array) $data);
  342. $master->store();
  343. NotasItem::where('notas_id', '=', $master->id)->delete();
  344. if( $param['NotasItem_list_disciplinas'] )
  345. {
  346. foreach( $param['NotasItem_list_disciplinas'] as $key => $item_id )
  347. {
  348. $detail = new NotasItem;
  349. $detail->disciplinas = $param['NotasItem_list_disciplinas'][$key];
  350. $detail->nota1_primeiro_bi = $param['NotasItem_list_nota1_primeiro_bi'][$key];
  351. $detail->nota2_primeiro_bi = $param['NotasItem_list_nota2_primeiro_bi'][$key];
  352. $detail->nota3_primeiro_bi = $param['NotasItem_list_nota3_primeiro_bi'][$key];
  353. $detail->recuperacao_pri_bi = $param['NotasItem_list_recuperacao_pri_bi'][$key];
  354. $detail->nota1_segundo_bi = $param['NotasItem_list_nota1_segundo_bi'][$key];
  355. $detail->nota2_segundo_bi = $param['NotasItem_list_nota2_segundo_bi'][$key];
  356. $detail->nota3_segundo_bi = $param['NotasItem_list_nota3_segundo_bi'][$key];
  357. $detail->recuperacao_seg_bi = $param['NotasItem_list_recuperacao_seg_bi'][$key];
  358. $detail->nota1_terceiro_bi = $param['NotasItem_list_nota1_terceiro_bi'][$key];
  359. $detail->nota2_terceiro_bi = $param['NotasItem_list_nota2_terceiro_bi'][$key];
  360. $detail->nota3_terceiro_bi = $param['NotasItem_list_nota3_terceiro_bi'][$key];
  361. $detail->recuperacao_ter_bi = $param['NotasItem_list_recuperacao_ter_bi'][$key];
  362. $detail->nota1_quarto_bi = $param['NotasItem_list_nota1_quarto_bi'][$key];
  363. $detail->nota2_quarto_bi = $param['NotasItem_list_nota2_quarto_bi'][$key];
  364. $detail->nota3_quarto_bi = $param['NotasItem_list_nota3_quarto_bi'][$key];
  365. $detail->recuperacao_qua_bi = $param['NotasItem_list_recuperacao_qua_bi'][$key];
  366. $detail->recuperacao_final = $param['NotasItem_list_recuperacao_final'][$key];
  367. $detail->media_final = $param['NotasItem_list_media_final'][$key];
  368. $detail->notas_id = $master->id;
  369. $detail->store();
  370. }
  371. }
  372. TTransaction::close(); // close the transaction
  373. TForm::sendData('form_Notas', (object) ['id' => $master->id]);
  374. new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
  375. }
  376. catch (Exception $e) // in case of exception
  377. {
  378. new TMessage('error', $e->getMessage());
  379. $this->form->setData( $this->form->getData() ); // keep form data
  380. TTransaction::rollback();
  381. }
  382. }
  383. }
  384. ?>


Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (0)