Заместо того, чтобы входить в тело
post после нажатия на кнопку
submit, вылезает такое сообщение с ошибкой
500 на текущий
action в консоли
firebug - а .
Ajax кнопку я не использую, только ajax валидацию.
Ошибка в консоли:
POST drive/sadmin/configUser/create 500 (Internal Server Error)
Форма:
<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
www.elisdn.ru/blog/24/vinosim-deistviia-kontroller...
Я попадаю в метод run класса
DCreateAction . Проверил с помощью die();
if(isset($_POST[$modelName]))
не попадаю.
$modelName выводит класс модели правильно (ConfigUser).
Вот базовый контроллер, от которого наследуюсь, в нем подключаю внешние действия:
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 глючит:
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
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);
}
}
Помогите пожалуйста!