Hello,
I’m using Fullcalendar for Yii2 (https://github.com/philippfrenzel/yii2fullcalendar-demo) and I want to save with Ajax the event when I click on a date. The datas commes from the dropdownlist.
It seems that my code couldn’t find the function in my controller, maybe it’s the Url ?
My view with JS and the link to my funstion Ajax on my controller :
<?php
$form = ActiveForm::begin();
?>
<div class="row">
<div class="col-md-4">
<?= $form->field($feuille_de_jour_responsable, 'ID_Categorie')->dropDownList(CategorieFdj::find()->select(['Nom', 'ID_Categorie'])->indexBy('ID_Categorie')->column(), ['id'=>'catId']); ?>
</div>
<div class="col-md-4">
<?= $form->field($feuille_de_jour_responsable, 'ID_Poste_FDJ')->dropDownList(PosteFdj::find()->select(['Nom_Poste_FDJ', 'ID_Poste_FDJ'])->indexBy('ID_Poste_FDJ')->column(), ['id'=>'postId']); ?>
</div>
<div class="col-md-4">
<?= $form->field($feuille_de_jour_responsable, 'Code_Personnel')->dropDownList(Personnel::find()->select(['Nom_Personnel', 'Code_Personnel'])->indexBy('Code_Personnel')->column(), ['id'=>'codePers']); ?>
</div>
</div>
<?php ActiveForm::end();?>
<?php
$JSCode = <<<EOF
function(start,end) {
//alert ($("select[id=catid] option:selected").text());
var title = $("select[id=codePers] option:selected");
var codePersonnel = $("select[id=codePers] option:selected").val();
var posteId = $("select[id=postId] option:selected").val();
var categorieID = $("select[id=catId] option:selected").val();
//alert($('#catid').val());
var eventData;
$.ajax({
url : '/site/Ajax',
dataType: 'json',
data: {
codePersonnel : codePersonnel
//dateCalendaire : start.format(),
//posteId : posteID,
//categorieID : categorieID
// end: thedate1
},
success: function (data, response, event, date) {
alert("success here");
/*$('#calendar').fullCalendar('renderEvent',
{
title: title,
start: start.format()
//end: thedate1
}, true);*/
eventData = {
title: title,
start: start.format(),
end: start.format(),
};
$('#calendar').fullCalendar('renderEvent', eventData, true);
},
error: function () {
alert("Oops! Something didn't work");
}
});
}
EOF;
$JSEventClick = <<<EOF
function(calEvent, jsEvent, view) {
alert('Event: ' + calEvent.title);
alert('Coordinates: ' + jsEvent.pageX + ',' + jsEvent.pageY);
alert('View: ' + view.name);
// change the border color just for fun
//$(this).css('border-color', 'red');
}
EOF;
?>
<?= yii2fullcalendar\yii2fullcalendar::widget([
'id' => 'calendar',
'clientOptions' => [
'height' => 650,
// 'language' => 'fa',
//'eventLimit' => TRUE,
'selectable' => true,
'selectHelper' => true,
'droppable' => true,
'editable' => true,
// 'theme'=>true,
'fixedWeekCount' => false,
'defaultDate' => date('Y-m-d'),
'eventClick' => new JsExpression($JSEventClick),
'select'=>new JsExpression($JSCode)
],
]);
?>
<?= Html::encode($JSCode); ?>
<?= Html::encode($JSEventClick); ?>
And the function on my controller (SiteController)
public function actionAjax(){
if(isset(Yii::$app->request->post())){
$codePersonnel = "Ajax Worked!";
echo $codePersonnel;
}else{
$codePersonnel = "Ajax failed";
echo $codePersonnel;
}
// return Json
return \yii\helpers\Json::encode($codePersonnel);
}
Thank you for help =)
Sarah