Почему в Yii может не выполняется post Запрос?
22.07.2015, 13:59. Показов 1452. Ответов 2
Почему заместо того, чтобы входить в тело 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
|