SilverStripe 3 Gridfield is very flexible and easy to work with compared to the old ComplexTableField and popups of SilverStripe 2.4 (so far). One pitfall however is that when adding a record to a has_many the parent ID / relation ID is not prepopulated - related ticket here.

DNS is obviously a very important component of the Internet. Many people understand DNS works much like a phone book, where finding a phone number for a person requires looking for their name in an alphabetical list and then using the number adjacent.

Creating a scheduled task in SilverStripe, one that is called by cron, can be a bit fiddly and the documentation seems to have disappeared. Here's the process I followed to create a SilverStripe scheduled task that is run by cron.

This is an example image gallery that has no dependencies on other SilverStripe modules - not counting the SilverStripe framework and cms haha. Just an example of a bare bones image gallery, using ComplexTableField instead of the DataObjectManager. If you are looking for a more complete Image Gallery Tutorial please follow that link to a walkthrough, much of the process is the same.

For if you've ever been in the situation where you've developed a SilverStripe site for a client and now they want to review it before making it live - but you don't have a staging server set up. What you usually want to do is give the client full access to their website, but prevent the public from viewing the unfinished product. [ad#Half Banner] This simple technique is perfect for those situations. It lets you deliver a static HTML 'Under Construction' page to the general public, but if an admin user is logged in, the 'Under Construction' page disappears and the admin user can browse the site as normal. Additionally the 'Under Construction' page is served up with a 503 - Service Unavailable HTTP response status code.

By default posting form data from a SilverStripe unit test seems to restrict your POST data to only valid values. Meaning, if you want to post a value for a select field on the form, the value must be in the options for that select field in order for it to be POST'd. [ad#Half Banner] Usually when submitting form data from a unit test its easiest to use the FunctionalTest->submitForm() function with something like:

Unit testing can be a useful process to kill those pesky bugs, luckily with SilverStripe its relatively easy to get started unit testing. Running a test can take some time though, a great way of speeding up unit testing (as pointed out to me by Will Rossiter on the IRC channel) is to use the SQLite3 module by Andreas Piening. [ad#Half Banner] Installation is pretty straight forward, so that only your unit tests use the SQLite database you can hack up the config file a bit: