Jump to:

7940 Posts in 1543 Topics by 946 members

DataObjectManager Module

SilverStripe Forums » DataObjectManager Module » How To Debug this error? Unknown class passed as parameter

Discuss the DataObjectManager module, and the related ImageGallery module.

Moderators: martimiz, UncleCheese, Sean, biapar, Willr, Ingo, swaiba, simon_w

Page: 1
Go to End
Author Topic: 2104 Views
  • biapar
    Avatar
    Forum Moderator
    435 Posts

    How To Debug this error? Unknown class passed as parameter Link to this post

    Into Product.php class file; I write:

    class ResizeImage extends Image {
    static $db = null;

    function generateThumbnail($gd) {
    $gd->setQuality(80);
    return $gd->paddedResize(140,100);
    }

    function generateContentImage($gd) {
    $gd->setQuality(90);
    return $gd->resizeByWidth(200);
    }

    function generateLargeImage($gd) {
    $gd->setQuality(90);
    return $gd->resizeByWidth(600);
    }

    }

    class ImageAttachment extends DataObject {
    static $db = array(
    'Name' => 'Text'
    );
    /* static $has_one = array(
    'Image' => 'ResizeImage',
        );
        */
    static $has_one = array(
    'Image' => 'ResizeImage',
    'Product' => 'Product'
    );
    //<img class="headerImage" src="$Image.Thumbnail.URL" >
    static $field_names = array('Thumbnail' => 'Image','Name' => 'Name');

    function getCMSFields_forPopup() {
    $fields = new FieldSet();
    $fields->push(new TextField('Name', 'Name'));
    $fields->push(new ImageField('Image', 'Image'));

    return $fields;
    }
       
    function Thumbnail() {
    $Image = $this->Image();
    if ( $Image ) {
    return $Image->CMSThumbnail();
    } else {
    return null;
    }
    }

    }

    and

    class Product extends Page {.....

    static $has_many = array(
    'ImageAttachments' => 'ImageAttachment'
    );

    ....

    $my_imagetable = new DataObjectManager(
    $this,
    'ImageAttachments',
    'ImageAttachment',
    ImageAttachment::$field_names,
    ImageAttachment::getCMSFields_forPopup(), // form that pops up for edit
    "ProductID = {$this->ID}", // a filter to only display item associated with this page
    "Name ASC" // Sort by name
    );

    // $fields->addFieldToTab('Root.Content.Additional Images', $imagetable);
    $fields->addFieldToTab('Root.Content.Additional Images', $my_imagetable);

    ...}

    but when popup open for adding new image, I had this error at place of upload image field.

    [Warning] Unknown class passed as parameter
    GET /images/iframe/ImageAttachment/36/Image

    Line 2553 in /var/www/clients/client1/web12/web/sapphire/core/model/DataObject.php
    Source

    2544     * Return the given element, searching by ID
    2545     *
    2546     * @param string $callerClass The class of the object to be returned
    2547     * @param int $id The id of the element
    2548     *
    2549     * @return DataObject The element
    2550     */
    2551    public static function get_by_id($callerClass, $id) {
    2552       if(is_numeric($id)) {
    2553          if(is_subclass_of($callerClass, 'DataObject')) {
    2554             $tableClasses = ClassInfo::dataClassesFor($callerClass);
    2555             $baseClass = array_shift($tableClasses);
    2556             return DataObject::get_one($callerClass,"`$baseClass`.`ID` = $id");
    2557
    2558             // This simpler code will be used by non-DataObject classes that implement DataObjectInterface
    2559          } else {

    Trace

    * is_subclass_of(ImageAttachment,DataObject)
    Line 2553 of DataObject.php
    * DataObject::get_by_id(ImageAttachment,36)
    Line 533 of Image.php
    * Image_Uploader->linkedObj()
    Line 548 of Image.php
    * Image_Uploader->Image()
    Line 562 of Image.php
    * Image_Uploader->IsImage()
    Line 597 of Image.php
    * Image_Uploader->EditImageForm()
    * call_user_func_array(Array,Array)
    Line 408 of ViewableData.php
    * ViewableData->XML_val(EditImageForm,,1)
    Line 983 of ViewableData.php
    * ViewableData_Customised->XML_val(EditImageForm,,1)
    Line 37 of .cache.var.www.clients.client1.web12.web.sapphire.templates.Image_iframe.ss
    * include(/tmp/silverstripe-cache-var-www-redconsulting.it-web/.cache.var.www.clients.client1.web12.web.sapphire.templates.Image_iframe.ss)
    Line 354 of SSViewer.php
    * SSViewer->process(ViewableData_Customised)
    Line 166 of Controller.php
    * Controller->handleAction(HTTPRequest)
    Line 129 of RequestHandler.php
    * RequestHandler->handleRequest(HTTPRequest)
    Line 122 of Controller.php
    * Controller->handleRequest(HTTPRequest)
    Line 277 of Director.php
    * Director::handleRequest(HTTPRequest,Session)
    Line 121 of Director.php
    * Director::direct(/images/iframe/ImageAttachment/36/Image)
    Line 118 of main.php

    How resolve?

    Thanks

  • biapar
    Avatar
    Forum Moderator
    435 Posts
  • biapar
    Avatar
    Forum Moderator
    435 Posts
  • biapar
    Avatar
    Forum Moderator
    435 Posts

    Re: How To Debug this error? Unknown class passed as parameter Link to this post

    I had resolved.
    File product.php

    class Product_ImageAttachment extends DataObject {

    class Product_ImageAttachment extends DataObject {
    static $db = array(
    'Name' => 'Text'
    );

    /* static $has_one = array(
    'Image' => 'ResizeImage',
        );
        */
    static $has_one = array(
    'Image' => 'Product_ResizeImage',
    'Product' => 'Product'
    );
    //<img class="headerImage" src="$Image.Thumbnail.URL" >
    static $field_names = array('Thumbnail' => 'Image','Name' => 'Name');

    public function getCMSFields_forPopup() {

    $fields = new FieldSet();
    $fields->push(new TextField('Name', 'Name'));
    $fields->push(new ImageField('Image', 'Image'));

    return $fields;
    }

    function Thumbnail() {
    $Image = $this->Image();
    if ( $Image ) {
    return $Image->CMSThumbnail();
    } else {
    return null;
    }
    }

    }

    Into class Product extends Page :

    static $has_many = array(
    'ProductImageAttachments' => 'Product_ImageAttachment'
    );

    $my_imagetable = new DataObjectManager(
    $this,
    'ProductImageAttachments',
    'Product_ImageAttachment',
    Product_ImageAttachment::$field_names,
    Product_ImageAttachment::getCMSFields_forPopup(), // form that pops up for edit
    "ProductID = {$this->ID}", // a filter to only display item associated with this page
    "Name ASC" // Sort by name
    );
    ....ecc..

    Bye Bye

    2104 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.