Not able to access web path in "Display" function
Not able to access web path in "Display" function
camerondecker
Posts: 7Questions: 2Answers: 1
in Editor
I keep getting the error that "row" is not defined in the "Display" function. Here is my JS:
var authorEdit = new $.fn.dataTable.Editor( {
ajax: { type: 'POST', url: 'php/author-rest.php'},
table: "#authors",
idSrc: "Author.Author_ID",
fields: [
{ label: "Author Name:",name: "Author.Author_Name"},
{ label: "Primary Language:",name: "Author.Primary_Lang" },
{ label: "Birth Date:",name: "Author.Birth_Date",type:"date",dateFormat: $.datepicker.ISO_8601},
{ label: "Author Photo:",name: "Author.Photo_FK",type:"upload",clearText: "Remove", noImageText: 'No image',
display: function (val, row) { return '<img src="'+row.Files.Web_Path+'"/>' }
}
]
}).on( 'open', function ( e, type ) {
} );
$("#authors").DataTable({
dom: "Bfrtip",
ajax: { "url": "php/author-rest.php", "type": "POST", data: { className: "Author"}},
bLengthChange: false,
columns: [
{ data: "Author.Author_ID", "width":"5%",className: "alignCenter" },
{ data: "Author.Author_Name" },
{ data: "Author.Primary_Lang" },
{ data: "Author.Birth_Date" },
{ data: "Author.Mod_Date","render": function(data, type, row) { return '<span rel="tooltip" title="'+row.Author.Mod_By+'" >'+data+'</span>';} },
{ data: "Author.Mod_By",visible: false}
],
select: true,
buttons: [
{ extend: "create", editor: authorEdit },
{ extend: "edit", editor: authorEdit },
{ extend: "remove", editor: authorEdit }
]
});
And here is my PHP:
<?php
define('__ROOT__', dirname(dirname(__FILE__)));
require_once(__ROOT__."/users/models/config.php");
include( "../editor/php/DataTables.php" );
// Alias Editor classes so they are easy to use
use
DataTables\Editor,
DataTables\Editor\Field,
DataTables\Editor\Format,
DataTables\Editor\Join,
DataTables\Editor\Upload,
DataTables\Editor\Validate;
// Build our Editor instance and process the data coming from _POST
$editor = Editor::inst( $db, 'Author','Author_ID')
->fields(
Field::inst( 'Author.Author_ID' )->validator( 'Validate::notEmpty' ),
Field::inst( 'Author.Author_Name' )->validator( 'Validate::notEmpty' ),
Field::inst( 'Author.Primary_Lang' ),
Field::inst( 'Author.Birth_Date' ),
Field::inst( 'Author.Created_By' )->set( Field::SET_CREATE ),
Field::inst( 'Author.Mod_By' )->set( Field::SET_EDIT ),
Field::inst( 'Author.Mod_Date' )->set( Field::SET_EDIT ),
Field::inst( 'Author.Photo_FK' )->setFormatter( 'Format::nullEmpty' )
->upload( Upload::inst( $_SERVER['DOCUMENT_ROOT'].'/appendix/uploads/authors/__NAME__' )
->db( 'Files', 'File_ID', array(
'Files.File_Name' => Upload::DB_FILE_NAME,
'Files.File_Size' => Upload::DB_FILE_SIZE,
'Files.Web_Path' => Upload::DB_WEB_PATH,
'Files.System_Path' => Upload::DB_SYSTEM_PATH
) )
->validator( function ( $file ) {
return$file['size'] >= 5000000 ?
"Files must be smaller than 5MB" :
null;
} )
->allowedExtensions( [ 'png', 'jpg', 'gif' ], "Please upload an image" )
)
)->on( 'preCreate', function ( $editor, $values ) {
$editor
->field( 'Author.Created_By' )
->setValue($_SESSION["userCakeUser"]->username);
} )->on( 'preEdit', function ( $editor, $values ) {
$editor
->field( 'Author.Mod_By' )
->setValue($_SESSION["userCakeUser"]->username);
$editor
->field( 'Author.Mod_Date' )
->setValue(date("Y-m-d H:i:s"));
} );
$editor ->leftJoin( 'Files', 'Files.File_ID', '=', 'Author.Photo_FK' )
->process($_POST)
->json();
I've also run the debugger, but haven't found anything there either: http://debug.datatables.net/ogamek
I'm not sure what I'm missing or doing incorrectly. Any help would be great!
Cameron
This question has an accepted answers - jump to answer
This discussion has been closed.
Answers
Hi Cameron,
Have you upgraded from 1.4.x to 1.5? It looks like you are using 1.4 options for the upload there - they have changed a little in 1.5 to try and make it a little bit easier over all, but it does mean a little change. For example there is no second parameter passed into the
display
method now and you need to use thefile()
method to get upload file information now.The upgrade documentation should cover this, but if you have any questions, please let me know.
Allan
Hi Allan,
I've changed the Editor JS to match the correct number of params on the Display function:
But now it's saying that "table" is not defined, and I can't find any documentation of that variable's use or where it comes from. Is that something I need to change?
Thanks!
Cameron
I just figured it out! I had to assign the datatable to a variable and call file() on that variable! Thanks for your help!