nedostupná proměnná $form v šabloně – komponenty v presenteru
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- qteck
- Člen | 164
Ahoj,
napsal jsem si formulář proupload ale náhle jsem zjistil, že se v presenteru píše pomocí komponenty, tak jsem to přepsal a mám problém, nechce se mi vykreslit.
V šabloně mám klasicky {$form} ale píše mi to,že je to nedefinovaná proměnná. renderDefault mám prázdnej, vyčetl jsem, že by se to mělo dělat něják automaticky nebo což.
Posílámcelý ten prsenter. Díky za pomoc.
<?php
namespace App\Presenters;
use Nette,
App\Model,
Nette\Application\UI\Form;
use Nette\Image;
class UploadPresenter extends BasePresenter
{
/**
*
* @var Repository\Upload @inject
*/
public $upload;
function createComponentUploadForm()
{
$form = new Form;
$form->addSelect('gallery', 'Přiřadit galerii: ', $this->upload->getGalleries());
$form->addText('id_author','Tvoje ID')
->addRule($form::FILLED);
$form->addUpload('img','Snímky: ', true)
->addRule($form::FILLED, 'Je potřeba vybrat nějaké snímky.')
->addRule(Form::IMAGE, 'Obrázek může být pouze ve formátu jpg, png nebo gif.')
->addRule(Form::MAX_FILE_SIZE,'Velikost snímku nesmí překročit 2 mb.', 2*1048576);
$form->addSubmit('upload', 'Nahrát');
$form->onSuccess[] = array($this, 'UploadFormSubmitted');
return $form;
}
function UploadFormSubmitted(\Form $form)
{
$valuesOfForm = $form->getValues();
$path_original = 'images/galleries/'.$valuesOfForm->gallery.'/original/';
$path_resized = 'images/galleries/'.$valuesOfForm->gallery.'/resized/';
foreach($valuesOfForm->img as $img)
{
\Nette\Diagnostics\Debugger::dump($img->name);
\Nette\Diagnostics\Debugger::dump($img->temporaryFile);
\Nette\Diagnostics\Debugger::dump(($this->upload->getIdOfLastPic()+1));
if(move_uploaded_file($img->temporaryFile, $path_original.$img->name))
{
$type = explode('.', $img->name);
$newName = ($this->upload->getIdOfLastPic()+1) . '.' . \Nette\Utils\Strings::lower(end($type));
rename($path_original . $img->name , $path_original . $newName);
$this->upload->insertPic($newName, $valuesOfForm->id_author, $valuesOfForm->gallery);
$imgResize = \Nette\Image::fromFile($path_original . $newName);
$imgResize->resize(197, NULL);
$imgResize->sharpen();
$imgResize->save($path_resized. $newName,80);
}
}
$this->flashMessage('Upload proběhl úspěšně!', 'info');
\Nette\Diagnostics\Debugger::dump($valuesOfForm);
}
public function renderDefault()
{
}
}
- David Matějka
- Moderator | 6445
v sablone
{control uploadForm}
EDIT:
a v function UploadFormSubmitted(\Form $form)
mas chybu – smaz
to zpetne lomitko pred Form
Editoval matej21 (10. 6. 2014 18:21)