Ошибка при сохранении формы в админке

#1 8 июля 2015 в 11:20
На одном хостинге (как я понял, это впс или вдс сервер) при сохранении формы в админке редиректит на страницу с адресом

notice: Undefined index: action in /var/www/*********/data/www/**********/templates/*********/assets/ui/form.tpl.php on line 22

и текстом

Firefox не знает, как открыть данный адрес, так как один из следующих протоколов (notice) не связан ни с одной программой или не разрешен в этом контексте.


Поглядел этот файл. Там строка

  1. <form action="<?php echo $attributes['action']; ?>"
Атрибут экшн я передаю в форме, все как положено в docs

  1. <?php $this->renderForm($form, $item, array('method'=>'post', 'action' => ''), $errors); ?>
Как быть? На таймвеб + хостия + денвер все ок.

Мои скудные познания говорят, что нужно отключить показ notice на сайте, так как action = '' получается не определена и на это ругается пхп?
#2 8 июля 2015 в 11:45
Zau4man, адрес страницы куда редиректит такой:
notice: Undefined index: action in /var/www/*********/data/www/**********/templates/*********/assets/ui/form.tpl.php on line 22
???
А версия пхп там "нормальная"?
#3 8 июля 2015 в 11:53

А версия пхп там "нормальная"?

Loadырь
Сейчас уточню у него данные хостинга. Сам удивился такому редиректу и даже ума не приложу, как такое может получиться.
#4 8 июля 2015 в 16:25
Zau4man, покажите непосредственно экшен, где обрабатывается форма. Кроме этого, в шаблоне /assets/ui/form.tpl.php перед строкой
  1. $is_ajax = $attributes['method']=='ajax';
добавьте
  1. dump($attributes);
перейдите на страницу формы и покажите сюда что выведет.

Судя по всему, у вас где то массив $attributes перетирается.

и даже ума не приложу, как такое может получиться.

Zau4man
в это поле просто у вас пишется ошибка

notice: Undefined index: action in /var/www/*********/data/www/**********/templates/*********/assets/ui/form.tpl.php on line 22

Zau4man
и форма содержимое этого атрибута понимает как адрес для сабмита, все логично.
#5 8 июля 2015 в 20:17

покажите непосредственно экшен, где обрабатывается форма.

Fuze
Экшн простой

  1. <?php
  2.  
  3. class actionYoutubeAdd extends cmsAction
  4. {
  5. public function run()
  6. {
  7. $errors = false;
  8.  
  9. $form = $this->getForm('task');
  10.  
  11. $submit = $this->request->has('submit');
  12.  
  13. $item = $form->parse($this->request, $submit);
  14.  
  15. $model = cmsCore::getModel('youtube');
  16.  
  17. if($submit)
  18. {
  19. $errors = $form->validate($this, $item);
  20. if($errors)
  21. cmsUser::addSessionMessage(LANG_YOUTUBE_SAVE_ERROR,'error');
  22. else
  23. {
  24. $id = $model->saveTask($item);
  25. cmsUser::addSessionMessage(LANG_YOUTUBE_SAVE_DONE);
  26. $this->redirectTo('admin/controllers/edit/youtube');
  27. }
  28. }
  29.  
  30. return cmsTemplate::getInstance()->render('form_task', array(
  31. 'do' => 'add',
  32. 'form' => $form,
  33. 'item' => $item,
  34. 'errors' => $errors,
  35. ));
  36.  
  37.  
  38. }
  39. }

перейдите на страницу формы и покажите сюда что выведет.

Fuze
  1.  
  2. (
  3. [method] => post
  4. )
  5.  

Судя по всему, у вас где то массив $attributes перетирается.

Fuze
Звучит логично, но почему только на одном сайте...

хм. атрибуты формы выглядят так

  1. <form action="
  2. Notice: Undefined index: action in /var/www/*********/data/www/********/templates/******/assets/ui/form.tpl.php on line 22
  3. " method="post" enctype="multipart/form-data" accept-charset="utf-8">
phpinfo() хостинга
#6 8 июля 2015 в 21:01
Zau4man, тогда кроме как то, что системные классы изменены, других вариантов нет. Может сам файл /assets/ui/form.tpl.php изменен.
Сравните этот файл с дефолтным, а так же сравните метод renderForm класса cmsTemplate с дефолтным.
Я так понимаю, это проблема у клиента, а не у вас.

хм. атрибуты формы выглядят так

Zau4man
о чем я выше и написал
#7 8 июля 2015 в 21:18

тогда кроме как то, что системные классы изменены, других вариантов нет. Может сам файл /assets/ui/form.tpl.php изменен.
Сравните этот файл с дефолтным, а так же сравните метод renderForm класса cmsTemplate с дефолтным.

Fuze
файлы одинаковые. И форм и классов.

А может быть ошибка из-за неправильных настроек прав доступа к файлам? Попытка сменить шаблон с клиентского на default приводит к получению ошибки

Ошибка перезаписи файла конфигурации

#8 8 июля 2015 в 21:54

А может быть ошибка из-за неправильных настроек прав доступа к файлам?

Zau4man
нет

Попытка сменить шаблон с клиентского на default приводит к получению ошибки

Zau4man
поставьте файлу конфигурации системы права 777 временно.
/system/config/config.php

Тогда только пошаговая отладка посредством dump();

в методе renderForm делайте dump($attributes); смотрите что там. должно быть то, что вы передали в
  1. <?php $this->renderForm($form, $item, array('method'=>'post', 'action' => ''), $errors); ?>
т.е.
array('method'=>'post', 'action' => '')
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.