Vygenerování a uložení txt souboru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Carson
- Člen | 35
Ahoj,
řeším si generování konfiguračního souboru, který si následně potřebuji uložit a udělat redirect na daném formuláři, ze kterého čerpám data pro generování. Podařilo se mi soubor vygenerovat a uložit, ale nejsem schopen udělat redirect.
Níže je kód
Formulář
public function createComponentGenerateConfigurationManualy()
{
$form = new Form;
$form->addText('device_name','')
->setRequired();
$form->addSelect('device_vendor', '', array(
'vendor' => 'vendor',
'vendor' => 'vendor',
'vendor' => 'vendor'
)
);
$form->addText('device_ip','')
->setRequired();
$form->addText('mgmt_vlan','')
->setRequired()
->setAttribute('type' ,'number');
$form->addText('data_vlan','')
->setRequired()
->setAttribute('type' ,'number');
$form->addText('device_stp_region', '')
->setRequired();
$form->addSubmit('submit');
$form->onSuccess[] = array($this, 'GenerateConfigManualy');
return $form;
}
Generování
public function GenerateConfigManualy($Values){
$Values = $Values->getValues(TRUE);
$subnet = $this->ExplodeSubnet($Values['device_ip']);
$this->replace_array['%sysname%'] = $Values['device_name'];
$this->replace_array['%stp%'] = $Values['device_stp_region'];
$this->replace_array['%mgmtVlan%'] = $Values['mgmt_vlan'];
$this->replace_array['%dataVlan%'] = $Values['data_vlan'];
$this->replace_array['%ip%'] = $subnet['ip'];
$this->replace_array['%mask%'] = $this->createNetmaskAddr($subnet['mask']);
$this->replace_array['%gateway%'] = $this->GetSubnetGateway($subnet['ip'], $this->createNetmaskAddr($subnet['mask']));
$this->vendor = $Values['device_vendor'];
$this->flashMessage('Vygenerováno za ' . substr(microtime(), 0, 5) . ' ms', 'alert alert-success');
$this->print_config();
$this->redirect('this');
}
Uložení do PC přes httpresponse
public function print_config()
{
$content = '';
foreach ($this->GenerateConfig() as $item) {
$content .= $item. "\n";
}
$httpResponse = $this->presenter->getHttpResponse();
$httpResponse->setContentType('text/plain');
$httpResponse->setHeader('Content-Disposition', 'attachment; filename="' . $this->replace_array['%sysname%'] .'.txt"');
$httpResponse->setHeader('Content-Length', strlen($content));
$this->presenter->sendResponse(new TextResponse($content));
}
Editoval Carson (27. 6. 2016 12:06)
- Pavel Kravčík
- Člen | 1196
Občas to děláme hloupěji: Redirect na stránku a té stránce je tlačítko „stáhněte si txt soubor“.