【发布时间】:2016-12-07 10:04:30
【问题描述】:
我按照https://www.silverstripe.org/learn/lessons/working-with-data-relationships-has-many?ref=hub 上的教程为我的主页创建了一些特色项目。但不知何故我错过了一件,因为我收到了这个错误
[错误] 未捕获的异常:在“HomePageFeatured”类上找不到 has_one,从“HomePage”到“HomePageFeatured”的 has_many 关系需要“HomePageFeatured”上的 has_one
主页.php
<?php
/**
* Defines the HomePage page type
*/
class HomePage extends Page {
// private static $db = array(
// );
// private static $has_one = array(
// );
private static $has_many = array (
'Featured' => 'HomePageFeatured'
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->addFieldToTab('Root.Featured', GridField::create(
'Featured',
'Hervorgehobene Produkte',
$this->Featured(),
GridFieldConfig_RecordEditor::create()
));
return $fields;
}
private static $icon = "themes/hstheme/images/treeicons/home";
}
class HomePage_Controller extends Page_Controller {
}
HomePageFeatured.php
<?php
/**
* Holds the featured items from the Homepage
*/
class HomePageFeatured extends DataObject {
private static $db = array(
'Title' => 'Varchar',
'Description' => 'Text'
);
private static $has_one = array(
'Photo' => 'Image',
'HomePageFeatured' => 'HomePageFeatured'
);
public function getCMSFields() {
$fields = FieldList::create(
TextField::create('Title'),
TextareaField::create('Description'),
$uploader = UploadField::create('Photo')
);
$uploader->setFolderName('featured-photos');
$uploader->getValidator()->setAllowedExtensions(array('png','gif','jpeg','jpg'));
return $fields;
}
}
据我了解,问题在于 HomePageFeatured.php 中的 $has_one。但它有一个来自 HomePageFeatured 的参考。
【问题讨论】:
标签: php silverstripe