Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

SilverStripe

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

center|200px|SilverStripe logos The intent of this book is to be a set of solutions for common problems in the SilverStripe CMS ('content management system'). About SilverStripe SilverStripe is an MVC (model/view/controller) Framework and Content Management System based on PHP5 and MySQL5. Building a module Loading page specific JavaScript and CSS // controller class Movies_Controller extends Page_Controller { // init function init() { Requirements::javascript('mysite/javascript/movies.js'); parent::init(); } } CRUD (Create, Read, Update and Delete) in the CMS Let's say that we need to allow the Administrator to edit the list of coders in the Developers section. First we need to create the Developers DataObject. class Developers_DataObject extends DataObject { // fields static $db = array( 'Name' =>'Varchar(150)', 'Lastname' =>'Varchar(150)',); // edit form in the CMS function getCMSFields_forPopup() { $fields = new FieldSet(); $fields->push( new TextField( 'Name', 'Name:' ) ); $fields->push( new TextField( 'Lastname', 'Lastname:' ) ); return $fields; } } In the same DataObject, we need to define the fields for the form. Next, we need to create the Page type for the Developers section. class Developers_Page extends Page { // make the relation between the section and the list of coders static $has_one = array( 'MyDeveloper' => 'Developers_DataObject' ); // manage the relation in the CMS function getCMSFields() { // don't overwrite the main fields $fields = parent::getCMSFields(); $tablefield = new HasOneComplexTableField( $this, 'MyDeveloper', 'Developers_DataObject', array( 'Name' => 'Name', 'Lastname' => 'Lastname',), 'getCMSFields_forPopup'); // add a new tab in the CMS $fields->addFieldToTab( 'Root.Content.Coders', $tablefield ); return $fields; } } Our next step is to create a new page "Developers". Now we need to go to "Behaviour" and change the page type to Developers. This new page will have a tab called "Coders", where we can edit the developers list. Relationing a DataObject with a Module In this case we'll make a relation between Movies and Cities. Then we'll allow the administrator to add new cities in a page type 'Movies'. <?php /* * Local Cities Data Object * */ class LocalCitiesDataObject extends DataObject { static $db = array( "Name" => "Varchar(150)" ); // relation static $has_one = array( 'LocalCities' => 'Movies' // 1-n relation ); // edit form for the CMS function getCMSFields_forPopup() { $fields = new FieldSet(); $fields->push( new TextField( 'Name' ) ); return $fields; } } /** * Defines the Movies page type */ class Movies extends Page { // relation static $has_many = array( 'LocalCities' => 'LocalCitiesDataObject' // 1-n relation ); // records list in the CMS function getCMSFields() { // don't overwrite the defaults fields for the Page $fields = parent::getCMSFields(); // for handling 1-n relation $tablefield = new HasManyComplexTableField( $this, 'LocalCities', // the name of the relationship 'LocalCitiesDataObject', // the related table array( "Name" => "Name" ), 'getCMSFields_forPopup' // the function to build the add/edit form ); $fields->addFieldToTab( 'Root.Content.Cities', $tablefield ); return $fields; } } Credits This contribution is courtesy of the following coders: Guy Steuart Leonardo Alberto Celis S Web content management systems 0%