Illegal string offset ‚operation‘ při práci s formůlářem
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- mordare
- Začátečník | 117
Zdravím lidi. měl bych dotaz. Dělám fotogalerii, ale při zpracovávání formuláře obrázků dostávám laděnku se zprávou `Illegal string offset ‚operation‘ ` zde dávám uvedený formulář který mi to provádí. Ještě upzorním že se jedná o verzi pro PHP 5.2
public function createComponentImageEditForm()
{
$form = new NAppForm;
for ($i = 0; $i < $this->imageCount; $i++)
{
$form->addGroup('Editace Obrázku');
$c = $form->addContainer('c_image' . $i);
$c->addImage('image', 'http://muj_web.cz/fotogalerie/'. $this->imagesEdit[$i]->file_name . '_small.jpeg');
$c->addText('rank', 'Pořadí v galerii:')
->setValue($this->imagesEdit[$i]->rank);
$c->addTextArea('comment', 'Popis obrázku:')
->setValue($this->imagesEdit[$i]->comment);
$c->addHidden('imgId')
->setValue($this->imagesEdit[$i]->id);
$radio = $c->addRadioList('operation', 'Akce:', array(
'noop' => 'Nedělat nic',
'copy' => 'Kopírovat do',
'move' => 'Přesunout do',
'delete' => 'Smazat z galerie',
'unlink' => 'Smazat ze serveru'
));
$radio->setDefaultValue('noop');
}
$galArr = DatabaseManager::getAllgalleriesTitle();
$form->addGroup('Kopírovat/přesunout');
$form->addSelect('copy', 'Kopírovat do:', $galArr);
$form->addSelect('move', 'Přesunout do:', $galArr);
$form->setCurrentGroup();
$form->addSubmit('send', 'Editovat');
$form->onSuccess[] = callback($this, 'editImageFormSubmitted');
return $form;
}
public function editImageFormSubmitted($form)
{
$values = $form->getValues();
foreach($values as $key => $imagedata)
{
if ($imagedata['operation'] !== 'unlink') {
$img = DatabaseManager::getImage($imagedata['imgId']);
$image = new ImageModel($img);
$image->editImage($imagedata, $this->id);
}
elseif ($imagedata['operation'] == 'move' && $imagedata['move'] != -2) {
$img = DatabaseManager::getImage($imagedata['imgId']);
$test = dibi::select('*')->from('images')->where('file_name=%s', $img->filename)->where('gallery_id=%i', $imagedata['move'])->fetch();
if (count($test) > 0) {
throw new Exception('Zadaná galeriie obrázek již obsahuje');
}
else
{
$image = new ImageModel($img);
$image->editImage($imagedata, $imagedata['move']);
}
}
Editoval mordare (20. 1. 2013 16:44)
- mordare
- Začátečník | 117
no hází to u první if podmínky v tom cyklu. tedy zde
if ($imagedata['operation'] !== 'unlink') {
$img = DatabaseManager::getImage($imagedata['imgId']);
$image = new ImageModel($img);
no a přesněji hází laděnka Warning. Je zajímavé, ale to že to co je v té podmínce tak se většinou provede.