Уважаемые коллеги. У меня есть форма
<?php $form = $this->beginWidget('CActiveForm', array(
'id' => 'form-Office-reservd',
'enableAjaxValidation' => false,
'action' => "/site/Ocenka31",
'method' => "POST"
)); ?>
<div class="container container-brd-none">
<h2>Оцените качества обслуживания</h2>
<div class="containers">
<div class="tr">
<div class="table tbl_reserv">
<div class="td">В какое подразделение Вы бращались?</div>
<div class="td">
<select id="Office_type" class="default-field" name="Office[Office_type_id]">
<?php foreach ($Office_types as $Office_type): ?>
<option
value="<?php echo $Office_type->id ?>"
<?php echo ($selected_type->id == $Office_type->id) ? 'selected="selected"' : '' ?>
capacity="<?php echo $Office_type->capacity ?>"
>
<?php echo $Office_type->name; ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
</div>
</div>
</div>
<div class="container reserv_info">
<button id="room-reservd2" type="button" class="button"
onclick="Ocenka($(this))">
<span class="btn-text">Неудовлетворительно</span>
</button>
<button id="Office-reservd" type="button" class="button"
onclick="Ocenka3($(this))">
<span class="btn-text">Удовлетворительно</span>
</button>
<button id="room-reservd4" type="button" class="button"
onclick="Ocenka($(this))">
<span class="btn-text">Хорошо</span>
</button>
<button id="room-reservd5" type="button" class="button"
onclick="Ocenka($(this))">
<span class="btn-text">Отлично</span>
</button>
<h2>Спасибо за вашу оценку!</h2>
</div>
<?php $this->endWidget(); ?>
</div>
Кнопки отрабатываются скриптом
function Ocenka3($el) {
console.log($el);
$el.jax(
function () {
//complete
}, function (data) {
//alert('Спасибо за Вашу оценку. мы учтем это в нашей работе.');
//$('#reserved_captha_button').click();
//$('#reserved_captha input').val('');
// $('#form-room-reservd input').val('');
},
function (data) {
// $('#reserved_captha_button').click();
// $('#reserved_captha input').val('');
for (key in data.message) {
// alert(data.message[key]);
}
});
}
$.fn.jax = function (complete, success, success_error) {
var $element = $(this);
var data, url;
var $form = $('#form-' + $element.attr('id'));
console.log($form);
if ($form.length !== 0) {
data = $form.serialize();
url = $form.attr('action')
}
button.disable($element);
$.ajax({
url: url,
type: 'POST',
dataType: 'json',
data: data,
success: function (data) {
if (data != null)
if (data.status === 'success') {
if (typeof success !== "undefined") {
success(data);
}
} else {
if (typeof success_error !== "undefined") {
success_error(data);
} else {
for (key in data.message) {
alert(data.message[key]);
}
}
}
},
complete: function () {
button.undisable($element);
if (typeof complete !== "undefined") {
complete();
}
},
error: function () {
button.undisable($element);
alert("Непредвиденная ошибка");
}
});
return $element;
};
и контроллер
public function actionOcenka31($id=3)
{
$ocenka = new ocenka();
//if($_POST) { echo ''; print_r($_POST); echo ''; }
$ocenka->date_from=new CDbExpression('NOW()');
$ocenkas=OfficeType::model()->findByPk($_POST['Office']['Office_type_id']);
$ocenka->full_name=$ocenkas->name;
//$ocenka->ocenka='3';
$ocenka->save();
Yii::app()->user->setFlash('success',"Спасибо за Вашу оценку. мы учтем это в нашей работе");
$respons3 = array('status' => 'success');
echo json_encode($respons3);
}
Вопрос: Как мне в контроллер передать данные нажатой кнопки т.е. при нажатии на "Удовлетворительно" - в контроллер должно попасть "3" там я его обрабатываю через if и записываю в $ocenka->ocenka='чего там пришло';
Можно сделать так но енто не красиво
<?php echo CHtml::button('Button Text', array('submit' => array('site/Ocenka3'))); ?>
для каждой оценки свой блок в контроллере. подскажите плз. как быть лучше
Сразу скажу попробовал сделать так
<button id="Office-reservd" type="button" class="button" data-ocenka="3"
onclick="Ocenka3($(this))">
<span class="btn-text">Удовлетворительно</span>
</button>
Но когда в контроллере изменения внес
public function actionOcenka31($id=3)
{
$ocenka = new ocenka();
if($_POST) { echo ''; print_r($_POST); echo ''; }
$ocenka->date_from=new CDbExpression('NOW()');
$ocenkas=OfficeType::model()->findByPk($_POST['Office']['Office_type_id']);
$ocenka->full_name=$ocenkas->name;
//$ocenka->ocenka='3';
$ocenka->ocenka=$_POST['Office']['Ocenka'];
$ocenka->save();
Yii::app()->user->setFlash('success',"Спасибо за Вашу оценку. мы учтем это в нашей работе");
$respons3 = array('status' => 'success');
echo json_encode($respons3);
}
то 500 ошибка Undefined index: Ocenka (D:\server\app-new\protected\controllers\SiteController.php:811)
#0 D:\server\app-new\protected\controllers\SiteController.php(811): CWebApplication->handleError()
#1 unknown(0): SiteController->actionOcenka31()