Форум программистов, компьютерный форум, киберфорум
PHP: Yii, Yii2
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
4 / 4 / 6
Регистрация: 23.05.2012
Сообщений: 445
1

Почему в Yii может не выполняется post Запрос?

22.07.2015, 13:59. Показов 1452. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему заместо того, чтобы входить в тело post запроса после нажатия на кнопку submit, вылезает такое сообщение с ошибкой 500 на текущий action в консоли firebug- а . Ajax кнопку я не использую, только ajax валидацию.

Ошибка в консоли:
POST drive/sadmin/configUser/create 500 (Internal Server Error)

Форма:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<div class="form">
 
<?php $form=$this->beginWidget('CActiveForm',
[
  'id'=>'config-user-form',
    'enableAjaxValidation' => true,
    'enableClientValidation'=>true,
    'method'=>'post',
    'clientOptions'=>
    [
        'validateOnSubmit'=>true,
    ],
    'htmlOptions' =>
    [
        'enctype' => 'multipart/form-data'
    ],
]);
 ?>
  <p class="note">Поля со <span class="required">*</span> обязательны.</p>
 
  <?php echo $form->errorSummary($model); ?>
    <ul class="nav nav-tabs nav-catalog">
        <li class="active"><a data-toggle="tab" href="#panel1">RU</a></li>
        <li><a data-toggle="tab" href="#panel2">kz</a></li>
        <li><a data-toggle="tab" href="#panel3">en</a></li>
    </ul>
    <div class="tab-content">
        <div id="panel1" class="tab-pane fade in active">
            <table class="table">
                <tr>
                    <td>
                        <?php echo $form->labelEx($model,'name'); ?>
                    </td>
                    <td>
                        <?php echo $form->textField($model,'name',['size'=>60,'maxlength'=>255, 'placeholder'=>'Отображать непрочитанные сообщения']); ?>
                        <?php echo $form->error($model,'name'); ?>
                    </td>
                </tr>
                <tr>
                    <td>
                        <?php echo $form->labelEx($model,'description'); ?>
                    </td>
                    <td>
                        <?php echo $form->textArea($model,'description',array('rows'=>6, 'cols'=>50, 'placeholder'=>'Описание')); ?>
                        <?php echo $form->error($model,'description'); ?>
                    </td>
                </tr>
            </table>
        </div>
        <div id="panel2" class="tab-pane fade">
            <table class="table">
                <tr>
                    <td>
                        <?php echo $form->labelEx($model,'name_kz'); ?>
                    </td>
                    <td>
                        <?php echo $form->textField($model,'name_kz',['size'=>60,'maxlength'=>255,'placeholder'=>'kz название' ]); ?>
                        <?php echo $form->error($model,'name_kz'); ?>
                    </td>
                </tr>
                <tr>
                    <td>
                        <?php echo $form->labelEx($model,'description_kz'); ?>
                    </td>
                    <td>
                        <?php echo $form->textArea($model,'description_kz',array('rows'=>6, 'cols'=>50, 'placeholder'=>'kz описание')); ?>
                        <?php echo $form->error($model,'description_kz'); ?>
                    </td>
                </tr>
            </table>
        </div>
        <div id="panel3" class="tab-pane fade">
            <table class="table">
                <tr>
                    <td>
                        <?php echo $form->labelEx($model,'name_en'); ?>
                    </td>
                    <td>
                        <?php echo $form->textField($model,'name_en',['size'=>60,'maxlength'=>255,'placeholder'=>'en название']); ?>
                        <?php echo $form->error($model,'name_en'); ?>
                    </td>
                </tr>
                <tr>
                    <td>
                        <?php echo $form->labelEx($model,'description_en'); ?>
                    </td>
                    <td>
                        <?php echo $form->textArea($model,'description_en',array('rows'=>6, 'cols'=>50, 'placeholder'=>'en описание')); ?>
                        <?php echo $form->error($model,'description_en'); ?>
                    </td>
                </tr>
            </table>
        </div>
    </div>
    <table class="table crudTable">
        <tr>
            <td>
                <?php echo $form->labelEx($model,'order_sort'); ?>
            </td>
            <td>
                <?php echo $form->numberField($model,'order_sort'); ?>
                <?php echo $form->error($model,'order_sort'); ?>
            </td>
        </tr>
        <tr>
            <td>
                <?php echo $form->labelEx($model,'status'); ?>
            </td>
            <td>
                <?php echo $form->dropDownList($model,'status',['1'=>'Активен', '2'=>'Неактивен' ]);  // CHtml::listData ?>
                <?php echo $form->error($model,'status'); ?>
            </td>
        </tr>
        <tr>
            <td>
                <?php echo $form->labelEx($model,'exist'); ?>
            </td>
            <td>
                <?php echo $form->checkBox($model,'exist'); ?>
                <?php echo $form->error($model,'exist'); ?>
            </td>
        </tr>
    </table>
  <div class="row buttons">
    <?php echo CHtml::submitButton($model->isNewRecord ? 'Создать' : 'Сохранить', ['class'=>'btn btn-primary']); ?>
  </div>
<?php $this->endWidget(); ?>
</div><!-- form -->

В качестве action - ов использую внешние действия:
https://github.com/ElisDN/crud-actions
http://www.elisdn.ru/blog/24/v... mment_2114

Я попадаю в метод run класса DCreateAction . Проверил с помощью die();
PHP
1
[PHP]if(isset($_POST[$modelName]))
[/PHP] не попадаю. $modelName выводит класс модели правильно (ConfigUser).

Вот базовый контроллер, от которого наследуюсь, в нем подключаю внешние действия:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Yii::import('crud.components.*');
 
class DController extends Controller
{
    public function filters()
    {
        return
        [
            'accessControl',
            'postOnly + delete',
        ];
    }
    public function accessRules()
    {
        return array
        (
            array('allow',
                'actions'=>array('create', 'update', 'delete', 'view', 'admin', 'index','toggle', 'test'),
                'roles'=>array('4'),
            ),
            array('deny',
                'users'=>array('*'),
            ),
        );
    }
    public function actions()
    {
        return
        [
            // в админке используем по умолчанию actionAdmin вместо actionIndex
            // и задаём отдельное представление для оптимизации Ajax обновления грида
            'index'=>
            [
                'class'=>'DAdminAction',
                'view'=>'admin',
                'ajaxView'=>'_grid'
            ],
            'update'=>'DUpdateAction',
            'toggle'=>
            [
                'class'=>'DDoggleAction',
                'attributes' => array('public', 'popular')
            ],
            'delete'=>'DDeleteAction',
            'create'=>'DCreateAction',
            // Разрешаем получение данных по JSON при наличии $_GED['json']
            'view'=>
            [
                'class'=>'DViewAction',
                'json'=>true
            ]
        ];
    }
}

Вот сам контроллер в админке, действие которого create глючит:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
class ConfigUserController extends DController
{
  public $layout='/layouts/column2';
  protected function performAjaxValidation($model)
  {
    if(isset($_POST['ajax']) && $_POST['ajax']==='config-user-form')
    {
      echo CActiveForm::validate($model);
      Yii::app()->end();
    }
  }
}

Вот модель:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
class ConfigUser extends ActiveRecord
{
  public function tableName()
  {
    return 'f_config_user';
  }
  public function rules()
  {
    return array
        (
            [['name'], 'required'],
      array('status, sys_date, sys_date_update, sys_user, exist', 'numerical', 'integerOnly'=>true),
      array('name, name_kz, name_en', 'length', 'max'=>255),
      array('description, description_en, description_kz', 'safe'),
      array('id, name, name_kz, name_en, description, description_en, description_kz, status, sys_date, sys_date_update, sys_user, exist', 'safe', 'on'=>'search'),
    );
  }
    public function behaviors()
    {
        return
        [
            'log'=>
            [
                'class'=>'ext.behaviors.LogBehavior',
            ],
        ];
    }
  public function relations()
  {
    return array
        (
      'lUser22Configs' => array(self::HAS_MANY, 'LUser22Config', 'id_2'),
    );
  }
 
  public function attributeLabels()
  {
    return array
        (
      'id' => 'Код',
      'name' => 'Название',
      'name_kz' => 'Название Kz',
      'name_en' => 'Название En',
      'description' => 'Описание',
      'description_en' => 'Описание En',
      'description_kz' => 'Описание Kz',
      'status' => 'Статус',
      'sys_date' => 'Sys Date',
      'sys_date_update' => 'Sys Date Update',
      'sys_user' => 'Sys User',
      'order_sort' => 'Порядок',
      'exist' => 'Показывать?',
    );
  }
 
  public function search()
  {
    $criteria=new CDbCriteria;
    $criteria->compare('id',$this->id);
    $criteria->compare('name',$this->name,true);
    $criteria->compare('name_kz',$this->name_kz,true);
    $criteria->compare('name_en',$this->name_en,true);
    $criteria->compare('description',$this->description,true);
    $criteria->compare('description_en',$this->description_en,true);
    $criteria->compare('description_kz',$this->description_kz,true);
    $criteria->compare('status',$this->status);
    $criteria->compare('sys_date',$this->sys_date);
    $criteria->compare('sys_date_update',$this->sys_date_update);
    $criteria->compare('sys_user',$this->sys_user);
    $criteria->compare('exist',$this->exist);
 
        $criteria->condition = 'exist != 2';
 
        return new CActiveDataProvider($this,
        [
            'criteria'=>$criteria,
            'pagination'=>array('pageSize'=>100),
        ]);
  }
  public static function model($className=__CLASS__)
  {
    return parent::model($className);
  }
}

Помогите пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2015, 13:59
Ответы с готовыми решениями:

Почему в yii может быть пустым Yii::app()->request->urlReferrer?
Добрый день, Засунул в экшн контроллера (users/registration) такую конструкцию: if(!$role ||...

Не выполняется запрос в БД YII
Здравствуйте. Поучаю переменную для поиска: $find=$_POST;//строка введенная в поиск Делаю запрос...

Почему в yii не определяется дополнительный атрибут safe при post запросе?
Добрый день, Есть модель Users. В неё я включил 2 свойства не из таблицы class Users extends...

Почему в Yii может не отрабатываться $app->run(); ?
Добрый вечер! У меня такая проблема, закинул на хостинг сайт ыышный, и первый раз столкнулся с...

2
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
22.07.2015, 17:29 2
Возможно где то ошибка, но сами ошибки не отображаются и вместо них показывается 500 ошибка
1
4 / 4 / 6
Регистрация: 23.05.2012
Сообщений: 445
23.07.2015, 06:38  [ТС] 3
Вот в чем проблема крылась:

PHP
1
2
3
protected function performAjaxValidation($model)
 
public function performAjaxValidation($model)
0
23.07.2015, 06:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2015, 06:38
Помогаю со студенческими работами здесь

Почему в Yii enableAjaxValidation может блокировать нажатие кнопки?
Добрый день, Логи не на что не ругаются, странность.. Есть модель Cars: public function...

ProgressBar, крутящийся, пока выполняется post-запрос
обычный прогрессбар делать легко, но как сделать так чтобы прогрессбар крутился именно пока...

Post запрос выполняется только на своей машине, но не c сервера
Подскажите, как сделать чтобы скрипт выполнялся не только на моём компьютере, а и с сервера: ...

Почему не выполняется запрос
Уважаемые форумчане, подскажите почему когда пишу в процедуре VB Private Sub...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru