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