Editor and left join doesn't works for me
Editor and left join doesn't works for me
hi
wen i add or update row i have this error from the server :
Fatal error: Call to a member function val() on a non-object in /var/www/vhosts/ubicx.com/httpdocs/admin/php/Editor/Editor.php on line 1017
I have made a mistake?
javascript :
var editor = new jQuery.fn.dataTable.Editor( {
"ajax": "php/table.TB_DOMAINES2.php",
"table": "#TB_DOMAINES",
"fields": [
{
"label": "Nom",
"name": "TB_DOMAINES.C_LIBELLE",
"type": "text"
},
{
"label": "Date:",
"name": "TB_DOMAINES.D_DATEFIN",
"type": "date",
def: function () { return new Date(); },
dateFormat: jQuery.datepicker.ISO_8601
},
{
"label": "Client:",
"name": "TB_SOCIETE.C_LIBELLE",
"type": "select"
}
],
i18n: {
create: {
button: "Nouveau",
title: "Créer nouvelle entrée",
submit: "Créer"
},
edit: {
button: "Modifier",
title: "Modifier entrée",
submit: "Actualiser"
},
remove: {
button: "Supprimer",
title: "Supprimer",
submit: "Supprimer",
confirm: {
_: "Etes-vous sûr de vouloir supprimer %d lignes?",
1: "Etes-vous sûr de vouloir supprimer 1 ligne?"
}
},
error: {
system: "Une erreur s'est produite, contacter l'administrateur système"
}
}
} );
jQuery('#TB_DOMAINES').dataTable( {
"sDom": "Tfrtip",
"sAjaxSource": "php/table.TB_DOMAINES2.php",
"oLanguage": {
"sUrl": "http://ubicx.com/admin/fr.txt"
},
"aoColumns": [
{
"mData": "TB_DOMAINES.C_LIBELLE"
},
{
"mData": "TB_DOMAINES.D_DATEFIN"
},
{
"mData": "TB_SOCIETE.C_LIBELLE"
}
],
"aaSorting": [[1,"asc"]],
"oTableTools": {
"sRowSelect": "single",
"aButtons": [
{ "sExtends": "editor_create", "editor": editor },
{ "sExtends": "editor_edit", "editor": editor },
{ "sExtends": "editor_remove", "editor": editor }
]
},
initComplete: function ( settings, json )
{
editor.field('TB_SOCIETE.C_LIBELLE').update(json.TB_SOCIETE);
}
} );
the php :
$out = Editor::inst( $db, 'TB_DOMAINES' )
->fields(
Field::inst( 'TB_DOMAINES.C_LIBELLE' )
->validator( 'Validate::notEmpty' ),
Field::inst( 'TB_DOMAINES.D_DATEFIN' ),
Field::inst( 'TB_SOCIETE.C_LIBELLE' )
)
->leftJoin( 'TB_SOCIETE', 'TB_SOCIETE.id', '=', 'TB_DOMAINES.ID_SOCIETE' )
->process($_POST)
->data();
if ( !isset($_POST['action']) )
{
$out['TB_SOCIETE'] = $db
->selectDistinct( 'TB_SOCIETE', 'id as value, C_LIBELLE as label' )
->fetchAll();
}
echo json_encode( $out );
This discussion has been closed.
Answers
Do you really want that, or do you want to alter the
TB_DOMAINES.ID_SOCIETE
field for the record? My guess is that you want to useTB_DOMAINES.ID_SOCIETE
rather than trying to alter the joined table.Allan
yes ! i want to alter the TB_DOMAINES.ID_SOCIETE with a select type (list of TB_SOCIETE)
but i want to see TB_SOCIETE.C_LIBELLE in the datatable row
ps : Sorry but I'm a french user and I may be missing something on the documentation
ok I found !!
i change
"fields": [
{
"label": "Nom",
"name": "TB_DOMAINES.C_LIBELLE",
"type": "text"
},
{
"label": "Date:",
"name": "TB_DOMAINES.D_DATEFIN",
"type": "date",
def: function () { return new Date(); },
dateFormat: jQuery.datepicker.ISO_8601
},
{
"label": "Client:",
"name": "TB_DOMAINES.ID_SOCIETE",
"type": "select"
}
and
initComplete: function ( settings, json )
{
editor.field('TB_DOMAINES.ID_SOCIETE').update(json.TB_SOCIETE);
}
and php
->fields(
Field::inst( 'TB_DOMAINES.C_LIBELLE' )
->validator( 'Validate::notEmpty' ),
Field::inst( 'TB_DOMAINES.D_DATEFIN' ),
Field::inst( 'TB_SOCIETE.C_LIBELLE' ),
Field::inst( 'TB_DOMAINES.ID_SOCIETE' )
)
thank you for help allan
Hi,
Great to hear you got it working! Thanks for posting your solution :-)
Allan