1. Go to this page and download the library: Download g4b0/searchable-dataobjects library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
g4b0 / searchable-dataobjects example snippets
use g4b0\SearchableDataObjects\Searchable;
class DoNews extends DataObject implements Searchable {
private static $db = array(
'Title' => 'Varchar',
'Subtitle' => 'Varchar',
'News' => 'HTMLText',
'Date' => 'Date',
);
private static $has_one = array(
'Page' => 'PghNews'
);
/**
* Link to this DO
* @return string
*/
public function Link() {
return $this->Page()->Link() . 'read/' . $this->ID;
}
/**
* Filter array
* eg. array('Disabled' => 0);
* @return array
*/
public static function getSearchFilter() {
return array();
}
/**
* FilterAny array (optional)
* eg. array('Disabled' => 0, 'Override' => 1);
* @return array
*/
public static function getSearchFilterAny() {
return array();
}
/**
* FilterByCallback function (optional)
* eg. function($object){
* return ($object->StartDate > date('Y-m-d') || $object->isStillRecurring());
* };
* @return array
*/
public static function getSearchFilterByCallback() {
return function($object){ return true; };
}
/**
* Fields that compose the Title
* eg. array('Title', 'Subtitle');
* @return array
*/
public function getTitleFields() {
return array('Title');
}
/**
* Fields that compose the Content
* eg. array('Teaser', 'Content');
* @return array
*/
public function getContentFields() {
return array('Subtitle', 'Content');
}
}
class PghNews extends Page {
private static $has_many = array(
'News' => 'DoNews'
);
public function getCMSFields() {
$fields = parent::getCMSFields();
/* News */
$gridFieldConfig = GridFieldConfig_RelationEditor::create(100);
// Remove unlink
$gridFieldConfig->removeComponentsByType('GridFieldDeleteAction');
// Add delete
$gridFieldConfig->addComponents(new GridFieldDeleteAction());
// Remove autocompleter
$gridFieldConfig->removeComponentsByType('GridFieldAddExistingAutocompleter');
$field = new GridField('Faq', 'Faq', $this->News(), $gridFieldConfig);
$fields->addFieldToTab('Root.News', $field);
return $fields;
}
}
class PghNews_Controller extends Page_Controller {
private static $allowed_actions = array(
'read'
);
public function read(SS_HTTPRequest $request) {
$arguments = $request->allParams();
$id = $arguments['ID'];
// Identifico la faq dall'ID
$Object = DataObject::get_by_id('DoNews', $id);
if ($Object) {
//Popolo l'array con il DataObject da visualizzare
$Data = array($Object->class => $Object);
$this->data()->Title = $Object->Title;
$retVal = $this->Customise($Data);
return $retVal;
} else {
//Not found
return $this->httpError(404, 'Not found');
}
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.