Neproběhně odeslání formuláře v komponentě

Domki
Člen | 310
+
0
-

Mám komponentu v které vytvářím formulář který vykreslím. Danou komponentu přídam do presenteru

protected function createComponentAddEditBrand()
	{
		$result = $this->addEditBrandFormFactory->create(NULL);
		return $result;
	}

Kod komponenty:


class AddEditBrandForm extends Control
{
	private $brandId = NULL;
	private $brandsRepository = NULL;

	/**
	 * @param int|NULL $brandId
	 * @param BrandsRepository $brandsRepository
	 */
	public function __construct($brandId, BrandsRepository $brandsRepository)
	{
		parent::__construct();
		$this->brandId = $brandId;
		$this->brandsRepository = $brandsRepository;
	}

	public function createComponentAddEditBrandForm() {
		$form = new \Nette\Application\UI\Form();
		$form->addHidden('id', $this->brandId);
		$form->addText('name', 'Značka:')->addRule(Form::FILLED, 'Pole "Značka" je poviné.');
		$form->addTextArea('description', 'Popis');
		$form->addSubmit('save', 'Uložit')->controlPrototype->addClass('btn btn-primary');
		$form->onValidate[] = [$this, 'validateUniqueNameForm'];
		$form->onSuccess[] = [$this, 'addEditBrandFormSucceeded'];

		return $form;
	}

	public function addEditBrandFormSucceeded(\Nette\Application\UI\Form $form)
	{
		Debugger::fireLog("sdf");
		$values = $form->values;
		try {
			if (!isset($values->id)) {
				/**@var Brand $brand * */
				$brand = $this->brandsRepository->createEntity();
				$brand->name = $values->name;
				$brand->description = $values->description;
				$this->brandsRepository->persist($brand);
				$this->presenter->flashMessage('značka pridana', 'success');
			} else {
				// Update
			}
			$this->presenter->redirect('Brand:');
		}catch (UniqueConstraintViolationException $e) {
			$form['name']->addError('Název značky "'.$values->name.'" již existuje. Zadejte prosím jiný název.');
		}
	}

	public function validateUniqueNameForm(\Nette\Application\UI\Form $form)
	{
		$values = $form->getValues();
		$brands = $this->brandsRepository->findBy(['name' => $values->name]);
		if (count($brands) > 0) {
			$form['name']->addError('Název značky "'.$values->name.'" již existuje. Zadejte prosím jiný název.');
		}
	}

	public function render()
	{
		$template = $this->template;
		$template->setFile(__DIR__ . '/AddEditBrandForm.latte');
		$template->render();
	}
}

Když odešlu formulář tak se mi načte stránka znovu ale firelog v metodě addEditBrandFormSucceeded se vůbec neprovede. Kde je problém?
Díky

Machy8
Člen | 59
+
0
-

A validace ti proběhne? Nepřidá se ti náhodou ten error?

Domki
Člen | 310
+
0
-

No nevím jak poznam jestli proběhne.
Rozhodně tam zadávám validní data, a žadnou hlašku to nevypíše, jen se loadne nova stranka vymaže form.
Pokud napíši nazev který jíž existuje tak validace proběhne a hlašku to vypíše.

Domki
Člen | 310
+
0
-

A napadlo me si zkusit změnit redirect. Ono to do succedd metody de jen se firelog přepíše při obnově tak není videt.
Se omlouvám ale už to funguje fajné

RSS tématu Téma zavřeno