Wysiwyg pole není ve výsledcích postu
- sharrow
- Člen | 6
Ahoj,
s Nette začínám, proto doufám, že můj dotaz nebude moc lamí. Mám formulář, v něm mám mimo jiné textarea a wysiwyg. Liší se jenom tím, že wysiwyg má class=„wysiwyg“, pokud je to podstatné, používám elRTE editor.
<textarea cols="80" rows="10" class="wysiwyg" name="text4" id="frmtableEditForm-text4"></textarea>
Problém je v tom, že ve výsledcích mi chybí data pouze a jenom z wysiwyg editoru.
Trochu jsem zapátral a zjistil jsem, že v $_POST data jsou, ale místo očekávaného $_POST[‚text4‘] (jak je to u ostatních polí formuláře) jsou data v $_POST[‚frmtableEditForm-text4‘]. Po zavolání $temp = $form->getValues() už mám ale k dispozici jen $temp[‚text4‘], které je prázdné
Nějaké nápady?
- sharrow
- Člen | 6
Právě že tam žádný kouzla nedělám
protected function createComponentTableEditForm($name)
{
$form = new AppForm;
$form->setMethod('post');
foreach($this->tableData as $column => $columnData)
{
if ($columnData['type'] == 'textarea')
{
$form->addTextarea($column,$columnData['name'],80,10);
}
if ($columnData['type'] == 'wysiwyg')
{
$form->addTextarea($column,$columnData['name'],80,10)->getControlPrototype()->class('wysiwyg');
}
...
}
$form->addSubmit('save', 'Uložit');
$form->onSubmit[] = callback($this, 'processForm');
return $form;
}
public function processForm($form)
{
$values = $form->getValues();
// no a tady už je oheň na střeše
}
Formulář samotný pak vypadá taky nevině
<tr>
<th><label for="frmtableEditForm-text2">Textarea</label></th>
<td><textarea cols="80" rows="10" name="text2" id="frmtableEditForm-text2"></textarea></td>
</tr>
<tr>
<th><label for="frmtableEditForm-text4">Wysiwyg</label></th>
<td><textarea cols="80" rows="10" class="wysiwyg" name="text4" id="frmtableEditForm-text4"></textarea></td>
</tr>
Výsledek je pak
$_POST[‚text2‘] // obsah textarea
$_POST[‚frmtableEditForm-text4‘] // obsah wysiwyg
- jtousek
- Člen | 951
sharrow napsal(a):
TinyMCE nepoužívám používám elRTE a navíc není problém s tím, že by se to neuložilo, je problém s tím, že se to uloží do $_POST svým ‚id‘ místo svým ‚name‘
To vypadá spíše na bug toho editoru. Btw. ten tvůj editor je celkem neznámej, doporučuji přechod na CKEditor nebo TinyMCE.
- toka
- Člen | 253
Řešení je jednoduché, po chvilce „googlení“ nalezneš tento web. Zde
zjistíš, že stačí drobná úprava v elrte.full.js
– klidně
si z toho pak můžeš udělat min verzi.
Najdi si:
if (target.nodeName == 'TEXTAREA') {
this.source = this.target;
this.source.insertAfter(this.iframe).hide();
content = this.target.val();
} else {
this.source = $('<textarea />').insertAfter(this.iframe).hide();
content = this.target.hide().html();
}
A uprav takto:
if (target.nodeName == 'TEXTAREA') {
this.source = this.target;
this.source.insertAfter(this.iframe).hide();
content = this.target.val();
} else {
this.source = $('<textarea />').insertAfter(this.iframe).hide();
this.source.attr('name', this.target.attr('id') || this.target.attr('name'));
content = this.target.hide().html();
}
Zkoušel jsem, funguje, bere v potaz name
namísto
id
.
- jtousek
- Člen | 951
@toka: Máš tam chybku, má to být takto:
<script>
if (target.nodeName == 'TEXTAREA') {
this.source = this.target;
this.source.insertAfter(this.iframe).hide();
content = this.target.val();
} else {
this.source = $('<textarea />').insertAfter(this.iframe).hide();
this.source.attr('name', this.target.attr('name') || this.target.attr('id'));
content = this.target.hide().html();
}
</script>
- sharrow
- Člen | 6
>
To vypadá spíše na bug toho editoru. Btw. ten tvůj editor je celkem neznámej, doporučuji přechod na CKEditor nebo TinyMCE.
Problém CKEditoru a TinyMCE je ale v tom, že filemanager už není zadarmo. Sice se dá použít nějakej jinej, ale proč mít slepeninu, když ten elRTE spojuje wysiwyg i manager a vypadá hezky
- jtousek
- Člen | 951
sharrow napsal(a):
Problém CKEditoru a TinyMCE je ale v tom, že filemanager už není zadarmo. Sice se dá použít nějakej jinej, ale proč mít slepeninu, když ten elRTE spojuje wysiwyg i manager a vypadá hezky
To je samozřejmě pravda, ale třeba KCFinder mohu k oběma editorům vřele doporučit.
- sharrow
- Člen | 6
To je samozřejmě pravda, ale třeba KCFinder mohu k oběma editorům vřele doporučit.
Tak to je síla, prohodí se dvě písmena a z Pěknýho balíku je člověk na GPL licenci. Předělávat už to asi nebudu, ale každopádně díky za tip.
- jtousek
- Člen | 951
sharrow napsal(a):
Tak to je síla, prohodí se dvě písmena a z Pěknýho balíku je člověk na GPL licenci. Předělávat už to asi nebudu, ale každopádně díky za tip.
jj, autor si z nich tak trochu vystřelil :-D