Formular z komponenty nacitat do snippetu v komponente

- thm
 - Člen | 151
 
Takhle by to mohlo jít (jestli dobře chápu co potřebuješ – nerozumím
co je formulář ajaxem vytvořený).
Toto řešení zobrazí odkaz „ukaž formulář“, po kliknutí se provede
handle (kam si asi chceš ještě něco dát, jinak bych to řešil
javascriptem) a formulář se zobrazí.
presenter/komponenta:
/** @persistent */
public $formShowed = false;
public function handleShowForm(){
	$this->$formShowed = true;
	if($this->isAjax()) $this->redrawControl('someSnippet');
		else $this->redirect('this');
}
public function createComponentSomeForm(){
	//...
	return $form;
}
public function renderDefault(){
	$this->template->formShowed = $this->formShowed;
}
A v šabloně normálně:
<a n:href="showForm!" n:if="!$formShowed" class="ajax">Ukaž formulář</a>
{snippet someSnippet}
	<div n:if="$formShowed">
		{control someForm}
	</div>
{/snippet}
					Editoval thm (29. 9. 2014 9:31)

- sucho
 - Člen | 57
 
(jestli dobře chápu co potřebuješ – nerozumím co je formulář ajaxem vytvořený)
Načítať AJAXOM formulár, ktorý je vytvorený v komponente do snippetu ktorý je taktiež v tej istej komponente
skúsil som to
a stále to vyžaduje nejaký render na to aby to mohlo zobraziť
exception 'Nette\MemberAccessException' with message 'Call to undefined method App\...Control::render().'
mám to nejak takto
	/** @persistent */
	public $formShowed = false;
	public function createComponentForm(){
		$form = new Form;
		$form->addText('title', 'Názov')
				->setRequired('Vyplňte toto pole');
		...
		return $form;
	}
	public function renderDefault(){
		$this->template->formShowed = $this->formShowed;
		$this->template->render();
	}
	public function handleEdit($id){
		$this->formShowed = true;
		if($this->presenter->isAjax()){
			$this->redrawControl('orderStatus');
		}else{
			$this->redirect('this');
		}
	}
a latte v komponente
{snippet orderStatus}
    {if $formShowed}
        {control form}
    {/if}
{/snippet}
<div class="order-status">
	{foreach $statuses as $status}
		<div class="status">
			<a href="{link Edit!, $status->id}" class="edit ajax">{_'upraviť'}</a>
		</div>
	{/foreach}
</div>
				
- thm
 - Člen | 151
 
exception 'Nette\MemberAccessException' with message 'Call to undefined method App\...Control::render().'
Komponenta má metodu ->render(), ne ->renderDefault(). Psal jsem to
pro presenter.
Hláška ti to říká: „Volání nedefinované metody render()“
Jinak co jsem to tak zběžně projel, by to asi mohlo fungovat.
Editoval thm (29. 9. 2014 11:28)