nefunkční formulář když nenahraju obrázek
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- docky
- Člen | 59
protected function createComponentEditForm(){
$form = new UI\Form;
$form->addText('name', '');
$form->addText('email', '')
->addRule(Form::EMAIL, 'Špatně zapsaný email')
->setType('email');
$type = array(
'0' => 'GTA',
'1' => 'Counter Strike T',
'2' => 'Counter Strike CT',
);
$form->addSelect('tema', '', $type);
$form->addText('www', '');
$form->addText('skype', '');
$form->addText('steam', '');
$form->addText('fb', '');
$form->addText('youtube', '');
$form->addText('rockstar', '');
$form->addText('twich', '');
$form->addUpload('avatar', '')
->addRule(Form::IMAGE, 'Avatar musí být JPEG, PNG nebo GIF.')
->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 64 kB.', 64 * 1024 /* v bytech */);
$form->addSubmit('send', 'HOTOVO');
$form->onSuccess[] = array($this, 'editSucceeded');
return $form;
}
public function editSucceeded($form) {
$values = $form->values;
$user = $this->getUser();
$name = str_shuffle(md5(md5(rand(0, 100)."".time()."".rand(0, 100)))).'.png';
$imgUrl = $this->context->parameters['wwwDir'] . '/img/upload/avatars/' . $name;
$values->avatar->move($imgUrl);
$values->avatar = $name;
$this->database->table('users')->where('id',$user->identity->data["id"])->update($values);
$this->flashMessage('Upraveno');
$this->redirect('this');
}
Editoval docky (6. 6. 2015 18:47)
- Tirus91
- Člen | 199
@Mysteria
ve zpracování formuláře ještě vždy počítá s avatarem a nemá to moc
ošetřený
@docky
níž máš trochu upravený kód, ale na 100% si nejsem jist že to bude chodit
:) ale je tam toho víc ošetřenýho
protected function createComponentEditForm()
{
$form = new Form();
$form->addText('name', '');
$form->addText('email', '')
->addRule(Form::EMAIL, 'Špatně zapsaný email')
->setType('email');
$type = array(
'0' => 'GTA',
'1' => 'Counter Strike T',
'2' => 'Counter Strike CT',
);
$form->addSelect('tema', '', $type);
$form->addText('www', '');
$form->addText('skype', '');
$form->addText('steam', '');
$form->addText('fb', '');
$form->addText('youtube', '');
$form->addText('rockstar', '');
$form->addText('twich', '');
$form->addUpload('avatar', '')
->addCondition(Form::FILLED)
->addRule(Form::IMAGE, 'Avatar musí být JPEG, PNG nebo GIF.')
->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 64 kB.', 64 * 1024 /* v bytech */);
$form->addSubmit('send', 'HOTOVO');
$form->onSuccess[] = function ($form, $values) {
if ($this->editSucceeded($form, $values)) {
$this->flashMessage('Upraveno', 'success');
}else{
$form->addError('Data se nepodarilo ulozit');
return false;
}
$this->redirect('this');
};
return $form;
}
public function editSucceeded(Form $form, Nette\Utils\ArrayHash $values)
{
if ($values->avatar->isOk()) {
$name = str_shuffle(md5(md5(rand(0, 100) . "" . time() . "" . rand(0, 100)))) . '.png';
$imgUrl = $this->context->parameters['wwwDir'] . '/img/upload/avatars/' . $name;
$values->avatar->move($imgUrl);
$values->avatar = $name;
} else {
unset($values->avatar); //tady zalezi jak to ma cele fungovat v pripade, ze do inputu nevlozi zadny soubor..
}
try {
$this->database->table('users')->where('id', $this->getUser()->id)->update($values);
}catch (\Exception $ex){
\Tracy\Debugger::log($ex);
return false;
}
return true;
}
Editoval Tirus91 (6. 6. 2015 19:08)
- Tirus91
- Člen | 199
@docky
pár vsuvek k tvému kódu. Odděl si práci s DB od presenteru. Udělej si
nějaky model, který ti to bude zajišťovat. Taky v případě, kdy si jouda
(uživatel) změní nějaká data či avatara, tak se ti to zpět neprojeví do
jeho identity, takže v $this->getUser()->getIdentity() bude mít ta
původní (stará) data.
k avataru jen řeknu ještě jednu věc. Co rozlišení obrázku? ;)