Formulář – vlastní obrázek a automatický obrázek z youtube
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Muragosik
- Člen | 9
Zdravím,
Mám formulář v administraci, kde požaduji nadpis, popis, url z youtube
a vybrat obrázek z pc.
Chci mít dvě možnosti nahrávání
- vyplnění nadpisu, popisu a url z youtube, problém nastáva tehdy kdy nevyberu obrázek z pc.
- vyplnění nadpisu, popisu, url ^ a obrázek pro lepší náhled.
Takhle bych to rád proto, protože na youtube občas bývaji náhledy na prd.
Můj kod. Dá se to nějak šikovně upravit abych nemusel vždy vybírat obrázek z pc?
<?php
<?php
namespace AdminModule\Forms;
use Nette\Application\UI;
use Nette\Image;
use Nette\Utils\Strings;
class AddVideoForm extends \BaseForm
{
/** @var \Nette\Security\User */
private $user;
public function __construct(\Nette\Security\User $user)
{
parent::__construct();
$this->user = $user;
$form = $this;
$form->addHidden('id');
$form->addText('title', 'Nadpis:')
->setRequired('Vyplň!');
$form->addText('popisek', 'Popisek:');
$form->addText('url', 'URL:')
->setRequired('Vyplň!');
$form->addUpload('upload', 'Obrázek');
$form->addSubmit('send', 'Přidat')
->setAttribute('class', 'btn btn-primary');
// call method signInFormSucceeded() on success
$form->onSuccess[] = $this->formSubmitted;
return $form;
}
public function formSubmitted($form)
{
$values = $form->getValues();
$photo = $values->upload;
$extension = stristr($photo->name,'.');
$image = Image::fromFile($photo);
$name = mt_rand().$extension;
$image->save('uploads/images/'.$name);
$url = $values->url;
parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
$url = $my_array_of_vars['v'];
$url1 = Strings::webalize($values->title);
$data = array(
'title' => $values->title,
'url' => $url1,
'src' => $url,
'src2' => $name,
'popisek' => $values->popisek,
'type' => 'video',
'user_id' => $this->user->id,
'ins_dt' => new \DateTime
);
$post = $this->presenter->models->posts->getTable()->insert($data);
$betterUrl = $this->presenter->models->posts->generateUrl($post->id);
$data2 = array(
'url' => $betterUrl
);
$this->presenter->models->posts->getPost($post->id)->update($data2);
$this->presenter->flashMessage('Úspěšně přidáno!', 'success');
$this->presenter->redirect('this');
}
}
?>
Editoval Muragosik (24. 1. 2015 16:24)