CJ
Formulário vetorizado com TFile
Estou tentando a dias fazer um formulário vetorizado utilizando TFile. O layout está funcionando perfeitamente, mas acontece que não consigo inserir uma imagem em uma linha ao selecionar o arquivo. Tentei copiar trechos de telas do tutor, mas no onComplete não é possível localizar a variável $uniqid. Como faço para referenciar no onComplete o parametro filename da linha?
public static function onComplete($param)
{
new TMessage('info', 'Upload completed: '.$param['filename' .$uniqid ]);
//print_r($param[ 'filename']);
// refresh photo_frame
TScript::create("$('#photo_frame').html('')");
TScript::create("$('#photo_frame').append(\"<img style='width:100%' src='tmp/{$param['filename'.$uniqid ]}'>\");");
}
public function addFileRow($item)
{
$this->table_details->addSection('tbody');
$uniqid = mt_rand(1000000, 9999999);
$frame = new TElement('div');
$frame->id = 'photo_frame';
$frame->style = 'width:52px;height:auto;min-height:52px;border:1px solid gray;padding:4px;';
// create fields
$filename = new TFile('filename[]');
$descricao = new TEntry('descricao[]');
// set id's
$filename->setId('filename_'.$uniqid);
$descricao->setId('descricao_'.$uniqid);
$descricao->forceUpperCase();
$filename->setCompleteAction(new TAction(array($this, 'onComplete')));
// set sizes
$descricao->setSize('100%');
$filename->setSize('95%');
// set row counter
$frame->{'data-row'} = $this->detail_row;
$filename->{'data-row'} = $this->detail_row;
$descricao->{'data-row'} = $this->detail_row;
// set value
if (!empty($item->descricao)) { $descricao->setValue( $item->descricao ); }
if (!empty($item->filename)) { $filename->setValue( $item->filename ); }
// create delete button
$del = new TImage('fa:trash-o red');
$del->onclick = 'ttable_remove_row(this)';
$row = $this->table_details->addRow();
// add cells
$row->addCell($frame);
$row->addCell($filename);
$row->addCell($descricao);
$row->addCell( $del );
$row->{'data-row'} = $this->detail_row;
// add form field
$this->form->addField($filename);
$this->form->addField($descricao);
$this->detail_row ++;
}
Você pode passá-lo como parâmetro da ação onComplete:
Na função onComplete acesse via $param: