Nepovinný prvek addUpload ve formuláři
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- motorcb
- Člen | 552
Zdravim.
Snazim se udelat nepovinny addUpload:
/**
* Formular pro novinky
*/
protected function newForm()
{
$form = new Form();
$form->addText( 'title', 'Titulek:', 108 )
->addRule( Form::FILLED, 'Je nutné zadat titulek novinky' );
$form->addTextArea( 'text', 'Text:', 83 )
->addRule( Form::FILLED, "Je nutné zadat text novinky" )
->controlPrototype->addClass( 'ckedit' );
$form->addUpload('picture', 'Obrázek:')
->addRule( Form::IMAGE, 'Obrázek musí být JPEG, PNG nebo GIF.' );
return $form;
}
/**
* Formulář pro editaci novinky
*/
protected function createComponentEditNewForm()
{
$form = $this->newForm();
$form->addDate( 'date', 'Datum:', DateInput::TYPE_DATETIME )
->addRule( Form::FILLED, "Je nutné zadat datum novinky" );
$form->addSubmit( 'create', 'Editovat novinku' );
$form->onSuccess[ ] = $this->editNewFormSubmitted;
$form->setDefaults( array(
'title' => $this->oNew->title,
'text' => $this->oNew->text,
'date' => $this->oNew->date,
) );
if ( $this->oNew->picture ) {
$form['picture']->setOption('description', Html::el('img')->src( "/pictures/news/small_" . $this->oNew->picture )->class('picturePreview'));
}
return $form;
}
/**
* Odeslani formulare pro editaci novinky
*/
public function editNewFormSubmitted( Form $form )
{
$aValues = $form->getValues( TRUE ); // same as: (array) $form->values;
//pokud nahravam fotku
if ( $aValues[ "picture" ]->isOk() ) {
//funkce pro zmenseni a ulozeni fotky, vrati nazev fotky
$aValues["picture"] = $this->createNewsPhoto( $aValues["picture"] );
}
else
{
//nenahravam fotku
unset( $aValues[ "picture" ] );
}
$this->context->novinky->update( $this->oNew->id, $aValues );
$this->flashMessage( 'Novinka byla upravena', 'info' );
$this->redirect( 'Homepage:default' );
}
Ovšem tento kod mi skončí na chybě: Obrázek musí být JPEG, PNG nebo GIF.
Jak na to? Chci aby addUpload nebyl povinný, ale pokud se vybere obrázek,
tak musí splňovat požadovaná pravidla.
Používám Nette 2.0.6
Díky