Hey there,
[SS3] I want to refactore my form action method... but got a problem with the $form parameter using ajax.
It works with parameter $data only and then using $db = DB::query('INSERT' or 'UPDATE'); but now I need to update a many_many table ("campaign_campaignphases") and don't want to create all SQL queries manually.
jQuery ajax call:
$('form[data-async] .btn-primary').on('click', function(event) {
var form = $(this).closest('form');
// Get the specific action i.e. SaveCampaign
var action = $(this).attr('name').split('action_')[1];
$.ajax({
type: form.attr('method'),
url: action,
data: form.serialize(),
success: function(response, status) {
// doing some...
}
});
and the action itself in CampaignHolderPage.php should update a Campaign DataObject with
private static $many_many = array(
'CampaignPhases' => 'CampaignPhase'
);
public function SaveCampaign($data, $form) {
// Existing or new entry
$dbId = CampaignHolderPage::decryptId($data['ID']);
if ($data['ID'] != '' && $object = DataObject::get_by_id('Campaign', $dbId)) {
$form->saveInto($object);
$object->write();
// Phases
$selectedElements = $data['CampaignPhases'];
foreach($selectedElements as $selectedElement => $selectedId) {
$reference = DataObject::get_by_id('CampaignPhase', $selectedId);
$object->CampaignPhases()->add($reference);
unset($reference);
}
...
} else {
// Update...
$object = new Campaign();
$form->saveInto($object);
$object->write();
...
}
...
Request error:
ERROR [Warning]: Missing argument 2 for CampaignHolderPage_Controller::SaveCampaign()
Thx for any ideas or helping links