Editor 1.6.1 PHP Options error

Editor 1.6.1 PHP Options error

momokomomoko Posts: 2Questions: 0Answers: 0
edited December 2016 in Editor

Hi,

Since ver. 1.6.1 all of my tables stopped working because I used options. I tried one of the examples from the datatables.net, but it gives me the same error. Did I miss something when I updated the version? What can be the solution for this error?

I tried https://editor.datatables.net/examples/inline-editing/join.html

Fatal error: Uncaught exception 'ReflectionException' with message 'Class DataTables\Editor\Options does not have a constructor, so you cannot pass any constructor arguments' in /virtual/111.89.201.247/ssl/home/example/php/Ext/Ext.php:50
Stack trace:

newInstanceArgs(Array)">newInstanceArgs(Array)">0 /virtual/111.89.201.247/ssl/home/example/php/Ext/Ext.php(50): ReflectionClass->newInstanceArgs(Array)

1 /virtual/111.89.201.247/ssl/home/example/examples/php/join.php(26): DataTables\Ext::inst()

2 {main}

thrown in /virtual/111.89.201.247/ssl/home/example/php/Ext/Ext.php on line 50

// DataTables PHP library
include( "../../php/DataTables.php" );

// Alias Editor classes so they are easy to use
use
    DataTables\Editor,
    DataTables\Editor\Field,
    DataTables\Editor\Format,
    DataTables\Editor\Mjoin,
    DataTables\Editor\Options,
    DataTables\Editor\Upload,
    DataTables\Editor\Validate;


/*
 * Example PHP implementation used for the join.html example
 */
Editor::inst( $db, 'users' )
    ->field( 
        Field::inst( 'users.first_name' ),
        Field::inst( 'users.last_name' ),
        Field::inst( 'users.phone' ),
        Field::inst( 'users.site' )
            ->options( Options::inst()
                ->table( 'sites' )
                ->value( 'id' )
                ->label( 'name' )
            )
            ->validator( 'Validate::dbValues' ),
        Field::inst( 'sites.name' )
    )
    ->leftJoin( 'sites', 'sites.id', '=', 'users.site' )
    ->process($_POST)
    ->json();

Replies

  • allanallan Posts: 61,744Questions: 1Answers: 10,111 Site admin
    edited December 2016

    Hi,

    Could you let me know what version of PHP it is that you are using please? It sounds like something that newer PHP versions are more flexible with.

    I suspect that the fix will be in Ext.php - the static inst method could be updated to be:

        public static function inst ()
        {
            $rc = new \ReflectionClass( get_called_class() );
            $args = func_get_args();
    
            return count( $args ) === 0 ?
                $rc->newInstance() :
                $rc->newInstanceArgs( $args );
        }
    

    Thanks,
    Allan

  • bilyejdbilyejd Posts: 6Questions: 4Answers: 0

    Allan,

    I ran into this problem today when upgrading to 1.6.1, and your change worked for me. I'm using PHP 5.3.3.

    Thanks,
    Jordan

  • allanallan Posts: 61,744Questions: 1Answers: 10,111 Site admin

    Super - thanks! I'll have that committed and included in the 1.6.2 release.

    Regards,
    Allan

  • momokomomoko Posts: 2Questions: 0Answers: 0

    Hi Allan,
    I'm running PHP Version 5.3.3.
    Thank you for your support.
    Problem solved!

This discussion has been closed.