- concrete5 Cookbook
- David Strack
- 413字
- 2021-08-13 16:16:00
Adding a page selector field to a form
It is easy to add a page selector field to a form. When clicked on, the sitemap will appear in a modal window, allowing for easy browsing and selecting of a page. This allows for user friendly custom applications that can allow users to attach pages to any type of custom object, like a blog post or cooking recipe, for example.
Getting ready
We will need to use the FormPageSelectorHelper
class, which we will need to load using the Loader
library.
This recipe will need to be written inside of an HTML form somewhere in your site. We have created a basic single page for this purpose, which can be downloaded with the code from the website for this book. To install the single page, copy the code for this recipe to your concrete5 site directory and visit /dashboard/pages/single
. Add a new single page with a path of /example
.
How to do it...
concrete5 includes a helper to generate the necessary JavaScript and HTML text needed to show the sitemap selector widget. We will use the Loader
class to include and return the PageSelectorHelper
class, which will then return the entire HTML that we need. The steps are as follows:
- Make the
pageSelector
helper class available for us to use. TheLoader
class will automatically instantiate and return the instantiated helper object when the helper gets loaded.$pageSelector = Loader::helper('form/page_selector');
- Output the HTML and JavaScript required allowing users to select a page.
echo $pageSelector->selectPage('page_id');
How it works...
The selectPage
function returns the HTML and JavaScript necessary to produce a page selector field. There is only one parameter required, and that is a string indicating the name of the field. concrete5 will add a hidden <input>
element to the form, which will allow the selected page ID to be read from a POST request.
In this example, once the form is submitted, you could retrieve the selected page ID by looking in the $_POST
super variable.
$pageId = $_POST['page_id'];
There's more...
You can specify a page ID in the optional second parameter, which will populate the page selector with an existing page.
$page = Page::getByCollectionPath('/about-us'); echo $pageSelector->selectPage('page_id', $page->getCollectionID());
The pageSelector
helper also has a function to display a sitemap in a modal window.
$args = array( 'display_mode' => 'full' ); $pageSelector->sitemap($args);
Note that the sitemap()
function loads an element, which is automatically printed to the screen, so there is no need to echo or print the result.
- Spring 5企業(yè)級開發(fā)實戰(zhàn)
- Getting Started with ResearchKit
- 零基礎(chǔ)學(xué)Scratch少兒編程:小學(xué)課本中的Scratch創(chuàng)意編程
- 單片機(jī)C語言程序設(shè)計實訓(xùn)100例:基于STC8051+Proteus仿真與實戰(zhàn)
- Visual Basic程序設(shè)計教程
- JavaScript+jQuery開發(fā)實戰(zhàn)
- Designing Hyper-V Solutions
- Mastering Ubuntu Server
- Python Network Programming Cookbook(Second Edition)
- Java程序設(shè)計與實踐教程(第2版)
- Hands-On RESTful Web Services with Go
- AppInventor實踐教程:Android智能應(yīng)用開發(fā)前傳
- QPanda量子計算編程
- Go語言從入門到精通
- 分布式數(shù)據(jù)庫HBase案例教程