slovicko control nebo cely form dostat do template, který se načítá v prestery componenty
- crookslovacko
- Člen | 75
Dobrý den,
Mám problém s menším špekem co pro mne připravili.
Mám multiple Form komponentu, která se bez problémů vykresluje.
Ovšem mám předpřipravené template v txt, které si načítám přes fopen
a to pak předám komponentě, která to vykreslí.
Ovšem nedaři se mi něco takového..do teď to nebyl problém s klasickýma
proměnnýma $this->id se nahradí ale komponenta se nevykreslí. Text
escapuju Zkoušel jsem i dvoji závorky:
$text = str_replace('END_EDITBOX',"{{ control noticForm-$this->id }}",$text);
Pošlu sem celou komponentu
<?php
use Nette\Application\UI;
use Nette\Application\UI\Multiplier;
class NoticControl extends UI\Control{
protected $model;
protected $data;
protected $id;
public function __construct($model,$data,$id) {
parent::__construct();
$this->model = $model;
$this->data = $data;
$this->id = $id;
}
protected function createComponentNoticForm()
{
return new Multiplier(function ($id) {
$form = new Nette\Application\UI\Form;
$form->addText('notice', 'Text:');
$form->addHidden('id', $this->id);
$form->addText('idtest', $this->id);
$form->addSubmit('send', 'Uložit');
return $form;
});
}
public function render(){
bdump($this->data);
$template = $this->template;
$template->setFile(__DIR__ . '/notic.latte');
$this->template->data = $this->data;
$this->template->id = $this->id;
$text = $this->data['TEXT'];
$text = str_replace('BEGIN_EDITBOX','',$text);
$text = str_replace('EB-ID='.$this->id,'',$text);
$text = str_replace('EB-GROUP='.$this->data['EB-GROUP'],'',$text);
$text = str_replace('EB-SIZE='.$this->data['EB-SIZE'],'',$text);
$text = str_replace('END_EDITBOX',"{{ control noticForm-$this->id }}",$text);//
$this->template->text = $text;
$this->template->render();
}
}
Toto je template {control noticForm-$id} je tu pro mou kontrolu ze se o pravdu vytváří zprávně by se měla vykreslit již v tom textu.
{block content}
{$text|noescape}
{control noticForm-$id}
Je mi jasné, že je to hodně zvláštní, tak budu rád za jakékoliv rady.
- crookslovacko
- Člen | 75
Dekuji za nakopnuti Posunul jsem se po sem:
Takto sem zmenil render..uz to ani nedavam do souboru ale presLatteFactory
dle rady Uz jsem to donutil alespon brat makra, ale stejne mi to haze chybu
Undefined property: stdClass::$uiControl
na radku echo Nette\Bridges\FormsLatte\Runtime::renderFormBegin($form = $_form =
$this->global->formsStack[] =
$this->global->uiControl[„noticForm-1“], []);
public function render(){
$latte = new Latte\Engine;
$latte->setLoader(new Latte\Loaders\StringLoader); //pokud chci template ve stringu
$latte->setTempDirectory('./temp');
$latte->onCompile[] = function($latte) {
Nette\Bridges\FormsLatte\FormMacros::install($latte->getCompiler());
};
$params['forms_start']="{form noticForm-$this->id}";
$params['forms_end'] = "{/form}";
$params['items'] = array('one', 'two', 'three','four');
//$temp='template.latte'; //soubor se šablonou
$text = $this->data['TEXT'];
$text = str_replace('BEGIN_EDITBOX',$params['forms_start'],$text);
$text = str_replace('EB-ID='.$this->id,'',$text);
$text = str_replace('EB-GROUP='.$this->data['EB-GROUP'],'',$text);
$text = str_replace('EB-SIZE='.$this->data['EB-SIZE'],'',$text);
$text = str_replace('END_EDITBOX',$params['forms_end'],$text);
$latte->render($text, $params);
}
asi tam rvu ten nazev spatne ale nevim kde je presne problem