4 <meta http-equiv=
"X-UA-Compatible" content=
"IE=edge">
5 <meta name=
"viewport" content=
"width=device-width, initial-scale=1">
6 <meta name=
"description" content=
"">
7 <meta name=
"keywords" content=
" ">
8 <title>Migrating from WSC
3.1 - Form Builder | WoltLab Suite
5.3 Documentation
</title>
10 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/syntax.css">
11 <link rel=
"stylesheet" href=
"https://fonts.googleapis.com/css?family=Open+Sans:400,300,600">
12 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/font-awesome.min.css">
13 <!--<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">-->
14 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/modern-business.css">
15 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/lavish-bootstrap.css">
16 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/customstyles.css">
17 <link rel=
"stylesheet" href=
"https://docs.woltlab.com/5.3/css/theme-blue.css?v=3">
19 <script src=
"https://docs.woltlab.com/5.3/js/jquery.min.js"></script>
20 <script src=
"https://docs.woltlab.com/5.3/js/jquery.cookie.min.js"></script>
21 <script src=
"https://docs.woltlab.com/5.3/js/jquery.navgoco.min.js"></script>
22 <script src=
"https://docs.woltlab.com/5.3/js/bootstrap.min.js"></script>
23 <script src=
"https://docs.woltlab.com/5.3/js/anchor.min.js"></script>
24 <script src=
"https://docs.woltlab.com/5.3/js/toc.js"></script>
25 <script src=
"https://docs.woltlab.com/5.3/js/customscripts.js"></script>
27 <link rel=
"shortcut icon" href=
"https://docs.woltlab.com/5.3/images/favicon.ico">
29 <link rel=
"alternate" type=
"application/rss+xml" title=
"woltlab.github.io" href=
"https://docs.woltlab.com/5.3feed.xml">
32 $(document).ready(function() {
33 // Initialize navgoco with default options
34 $(
"#mysidebar").navgoco({
37 openClass: 'active', // open
38 save: false, // leave false or nav highlighting doesn't work right
50 $(
"#collapseAll").click(function(e) {
52 $(
"#mysidebar").navgoco('toggle', false);
55 $(
"#expandAll").click(function(e) {
57 $(
"#mysidebar").navgoco('toggle', true);
65 $('[
data-toggle=
"tooltip"]').tooltip()
73 <nav class=
"navbar navbar-inverse navbar-fixed-top">
74 <div class=
"container topnavlinks">
75 <div class=
"navbar-header">
76 <button type=
"button" class=
"navbar-toggle" data-toggle=
"collapse" data-target=
"#bs-example-navbar-collapse-1">
77 <span class=
"sr-only">Toggle navigation
</span>
78 <span class=
"icon-bar"></span>
79 <span class=
"icon-bar"></span>
80 <span class=
"icon-bar"></span>
82 <a class=
"fa fa-home fa-lg navbar-brand" href=
"index.html"> <span class=
"projectTitle"> WoltLab Suite
5.3 Documentation
</span></a>
84 <div class=
"collapse navbar-collapse" id=
"bs-example-navbar-collapse-1">
85 <ul class=
"nav navbar-nav navbar-right">
86 <!-- entries without drop-downs appear here -->
90 <li><a href=
"https://www.woltlab.com" target=
"_blank">woltlab.com
</a></li>
96 <li><a href=
"https://github.com/WoltLab/WCF/" target=
"_blank">Code on github.com
</a></li>
100 <!-- entries with drop-downs appear here -->
101 <!-- conditional logic to control which topnav appears for the audience defined in the configuration file.-->
104 <!--comment out this block if you want to hide search-->
107 <div id=
"search-demo-container">
108 <input type=
"text" id=
"search-input" placeholder=
"search...">
109 <ul id=
"results-container"></ul>
111 <script src=
"https://docs.woltlab.com/5.3/js/jekyll-search.js" type=
"text/javascript"></script>
112 <script type=
"text/javascript">
113 SimpleJekyllSearch.init({
114 searchInput: document.getElementById('search-input'),
115 resultsContainer: document.getElementById('results-container'),
116 dataSource: 'https://docs.woltlab.com/
5.3/search.json',
117 searchResultTemplate: '
<li><a href=
"{url}" title=
"Migrating from WSC 3.1 - Form Builder">{title}
</a></li>',
118 noResultsText: 'No results found.',
132 <div class=
"container">
133 <div class=
"col-lg-12"> </div>
136 <div class=
"col-md-3">
140 <ul id=
"mysidebar" class=
"nav">
141 <li class=
"sidebarTitle">WoltLab Suite
5.3</li>
146 <a href=
"#">Getting Started
</a>
152 <li data-identifier=
"index"><a href=
"index.html">Introduction
</a></li>
161 <li data-identifier=
"getting-started_quick-start"><a href=
"getting-started_quick-start.html">Quick Start
</a></li>
171 <a href=
"#">PHP API
</a>
177 <li data-identifier=
"php_pages"><a href=
"php_pages.html">Pages
</a></li>
186 <li data-identifier=
"php_database-objects"><a href=
"php_database-objects.html">Database Objects
</a></li>
195 <li data-identifier=
"php_database-access"><a href=
"php_database-access.html">Database Access
</a></li>
204 <li data-identifier=
"php_exceptions"><a href=
"php_exceptions.html">Exceptions
</a></li>
213 <li class=
"subfolders">
219 <li data-identifier=
"php_api_caches"><a href=
"php_api_caches.html">Caches
</a></li>
224 <li data-identifier=
"php_api_comments"><a href=
"php_api_comments.html">Comments
</a></li>
229 <li data-identifier=
"php_api_cronjobs"><a href=
"php_api_cronjobs.html">Cronjobs
</a></li>
234 <li data-identifier=
"php_api_events"><a href=
"php_api_events.html">Events
</a></li>
239 <li data-identifier=
"php_api_form_builder"><a href=
"php_api_form_builder.html">Form Builder
</a></li>
244 <li data-identifier=
"php_api_package_installation_plugins"><a href=
"php_api_package_installation_plugins.html">Package Installation Plugins
</a></li>
249 <li data-identifier=
"php_api_user_activity_points"><a href=
"php_api_user_activity_points.html">User Activity Points
</a></li>
254 <li data-identifier=
"php_api_user_notifications"><a href=
"php_api_user_notifications.html">User Notifications
</a></li>
259 <li data-identifier=
"php_api_sitemaps"><a href=
"php_api_sitemaps.html">Sitemaps
</a></li>
269 <li data-identifier=
"php_code-style"><a href=
"php_code-style.html">Code Style
</a></li>
278 <li data-identifier=
"php_apps"><a href=
"php_apps.html">Apps
</a></li>
287 <li data-identifier=
"php_gdpr"><a href=
"php_gdpr.html">GDPR
</a></li>
297 <a href=
"#">Languages, Templates & CSS
</a>
303 <li data-identifier=
"view_languages"><a href=
"view_languages.html">Languages
</a></li>
312 <li data-identifier=
"view_templates"><a href=
"view_templates.html">Templates
</a></li>
321 <li data-identifier=
"view_css"><a href=
"view_css.html">CSS
</a></li>
331 <a href=
"#">JavaScript API
</a>
337 <li data-identifier=
"javascript_general-usage"><a href=
"javascript_general-usage.html">General Usage
</a></li>
346 <li class=
"subfolders">
347 <a href=
"#">New API
</a>
352 <li data-identifier=
"javascript_new-api_writing-a-module"><a href=
"javascript_new-api_writing-a-module.html">Writing a module
</a></li>
357 <li data-identifier=
"javascript_new-api_data-structures"><a href=
"javascript_new-api_data-structures.html">Data Structures
</a></li>
362 <li data-identifier=
"javascript_new-api_core"><a href=
"javascript_new-api_core.html">Core Functions
</a></li>
367 <li data-identifier=
"javascript_new-api_dom"><a href=
"javascript_new-api_dom.html">DOM
</a></li>
372 <li data-identifier=
"javascript_new-api_events"><a href=
"javascript_new-api_events.html">Event Handling
</a></li>
377 <li data-identifier=
"javascript_new-api_ajax"><a href=
"javascript_new-api_ajax.html">Ajax
</a></li>
382 <li data-identifier=
"javascript_new-api_dialogs"><a href=
"javascript_new-api_dialogs.html">Dialogs
</a></li>
387 <li data-identifier=
"javascript_new-api_browser"><a href=
"javascript_new-api_browser.html">Browser and Screen Sizes
</a></li>
392 <li data-identifier=
"javascript_new-api_ui"><a href=
"javascript_new-api_ui.html">User Interface
</a></li>
402 <li data-identifier=
"javascript_legacy-api"><a href=
"javascript_legacy-api.html">Legacy API
</a></li>
411 <li data-identifier=
"javascript_helper-functions"><a href=
"javascript_helper-functions.html">Helper Functions
</a></li>
420 <li data-identifier=
"javascript_code-snippets"><a href=
"javascript_code-snippets.html">Code Snippets
</a></li>
430 <a href=
"#">Package Components
</a>
436 <li data-identifier=
"package_package-xml"><a href=
"package_package-xml.html">package.xml
</a></li>
445 <li data-identifier=
"package_pip"><a href=
"package_pip.html">PIPs
</a></li>
455 <a href=
"#">Migration
</a>
461 <li class=
"subfolders">
462 <a href=
"#">Migrating from WSC
5.2</a>
467 <li data-identifier=
"migration_wsc-52_php"><a href=
"migration_wsc-52_php.html">PHP API
</a></li>
472 <li data-identifier=
"migration_wsc-52_templates"><a href=
"migration_wsc-52_templates.html">Templates and Languages
</a></li>
477 <li data-identifier=
"migration_wsc-52_libraries"><a href=
"migration_wsc-52_libraries.html">Third Party Libraries
</a></li>
483 <li class=
"subfolders">
484 <a href=
"#">Migrating from WSC
3.1</a>
489 <li data-identifier=
"migration_wsc-31_php"><a href=
"migration_wsc-31_php.html">PHP API
</a></li>
495 <li class=
"subfolders">
496 <a href=
"#">Migrating from WSC
3.0</a>
501 <li data-identifier=
"migration_wsc-30_php"><a href=
"migration_wsc-30_php.html">PHP API
</a></li>
506 <li data-identifier=
"migration_wsc-30_javascript"><a href=
"migration_wsc-30_javascript.html">JavaScript API
</a></li>
511 <li data-identifier=
"migration_wsc-30_templates"><a href=
"migration_wsc-30_templates.html">Templates
</a></li>
516 <li data-identifier=
"migration_wsc-30_css"><a href=
"migration_wsc-30_css.html">CSS
</a></li>
521 <li data-identifier=
"migration_wsc-30_package"><a href=
"migration_wsc-30_package.html">Package Components
</a></li>
527 <li class=
"subfolders">
528 <a href=
"#">Migrating from WCF
2.1</a>
533 <li data-identifier=
"migration_wcf-21_php"><a href=
"migration_wcf-21_php.html">PHP API
</a></li>
538 <li data-identifier=
"migration_wcf-21_templates"><a href=
"migration_wcf-21_templates.html">Templates
</a></li>
543 <li data-identifier=
"migration_wcf-21_css"><a href=
"migration_wcf-21_css.html">CSS
</a></li>
548 <li data-identifier=
"migration_wcf-21_package"><a href=
"migration_wcf-21_package.html">Package Components
</a></li>
559 <a href=
"#">Tutorials
</a>
565 <li data-identifier=
"tutorial_tutorial-series"><a href=
"tutorial_tutorial-series.html">Tutorial Series
</a></li>
579 var sidebar = $('#mysidebar');
580 var item = sidebar.find('.active');
581 if (item.length ===
0) {
582 var parent = 'migration_wsc-
31_php';
584 sidebar.find('li[
data-identifier=
"' + parent + '"]').addClass('active');
588 sidebar.find(
".active").parents('li').toggleClass(
"active");
594 <div class=
"col-md-9">
595 <div class=
"post-header">
596 <h1 class=
"post-title-main">Migrating from WSC
3.1 - Form Builder
</h1>
601 <div class=
"post-content">
607 <!-- this handles the automatic toc. use ## for subheads to auto-generate the on-page minitoc. if you use html tags, you must supply an ID for the heading element in order for it to appear in the minitoc. -->
609 $( document ).ready(function() {
610 // Handler for .ready() called.
612 $('#toc').toc({ minimumHeaders:
0, listType: 'ul', showSpeed:
0, headers: 'h2,h3,h4' });
614 /* this offset helps account for the space taken up by the floating toolbar. */
615 $('#toc').on('click', 'a', function() {
616 var target = $(this.getAttribute('href'))
617 , scroll_target = target.offset().top
619 $(window).scrollTop(scroll_target -
10);
630 <h2 id=
"example-two-text-form-fields">Example: Two Text Form Fields
</h2>
632 <p>As the first example, the pre-WoltLab Suite Core
5.2 versions of the forms to add and edit persons from the
<a href=
"tutorial_tutorial-series_part-1-base-structure.html">first part of the tutorial series
</a> will be updated to the new form builder API.
633 This form is the perfect first examples as it is very simple with only two text fields whose only restriction is that they have to be filled out and that their values may not be longer than
255 characters each.
</p>
635 <p>As a reminder, here are the two relevant PHP files and the relevant template file:
</p>
637 <figure class=
"highlight"><pre><code class=
"language-php" data-lang=
"php"><span class=
"cp"><?php
</span>
638 <span class=
"kn">namespace
</span> <span class=
"nn">wcf\acp\form
</span><span class=
"p">;
</span>
639 <span class=
"kn">use
</span> <span class=
"nn">wcf\data\person\PersonAction
</span><span class=
"p">;
</span>
640 <span class=
"kn">use
</span> <span class=
"nn">wcf\form\AbstractForm
</span><span class=
"p">;
</span>
641 <span class=
"kn">use
</span> <span class=
"nn">wcf\system\exception\UserInputException
</span><span class=
"p">;
</span>
642 <span class=
"kn">use
</span> <span class=
"nn">wcf\system\WCF
</span><span class=
"p">;
</span>
643 <span class=
"kn">use
</span> <span class=
"nn">wcf\util\StringUtil
</span><span class=
"p">;
</span>
646 * Shows the form to create a new person.
648 * @author Matthias Schmidt
649 * @copyright
2001-
2019 WoltLab GmbH
650 * @license GNU Lesser General Public License
<http://opensource.org/licenses/lgpl-license.php
>
651 * @package WoltLabSuite\Core\Acp\Form
653 <span class=
"kd">class
</span> <span class=
"nc">PersonAddForm
</span> <span class=
"k">extends
</span> <span class=
"nx">AbstractForm
</span> <span class=
"p">{
</span>
657 <span class=
"k">public
</span> <span class=
"nv">$activeMenuItem
</span> <span class=
"o">=
</span> <span class=
"s1">'wcf.acp.menu.link.person.add'
</span><span class=
"p">;
</span>
660 * first name of the person
663 <span class=
"k">public
</span> <span class=
"nv">$firstName
</span> <span class=
"o">=
</span> <span class=
"s1">''
</span><span class=
"p">;
</span>
666 * last name of the person
669 <span class=
"k">public
</span> <span class=
"nv">$lastName
</span> <span class=
"o">=
</span> <span class=
"s1">''
</span><span class=
"p">;
</span>
674 <span class=
"k">public
</span> <span class=
"nv">$neededPermissions
</span> <span class=
"o">=
</span> <span class=
"p">[
</span><span class=
"s1">'admin.content.canManagePeople'
</span><span class=
"p">];
</span>
679 <span class=
"k">public
</span> <span class=
"k">function
</span> <span class=
"nf">assignVariables
</span><span class=
"p">()
</span> <span class=
"p">{
</span>
680 <span class=
"k">parent
</span><span class=
"o">::
</span><span class=
"na">assignVariables
</span><span class=
"p">();
</span>
682 <span class=
"nx">WCF
</span><span class=
"o">::
</span><span class=
"na">getTPL
</span><span class=
"p">()
</span><span class=
"o">-
></span><span class=
"na">assign
</span><span class=
"p">([
</span>
683 <span class=
"s1">'action'
</span> <span class=
"o">=
></span> <span class=
"s1">'add'
</span><span class=
"p">,
</span>
684 <span class=
"s1">'firstName'
</span> <span class=
"o">=
></span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">firstName
</span><span class=
"p">,
</span>
685 <span class=
"s1">'lastName'
</span> <span class=
"o">=
></span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">lastName
</span>
686 <span class=
"p">]);
</span>
687 <span class=
"p">}
</span>
692 <span class=
"k">public
</span> <span class=
"k">function
</span> <span class=
"nf">readFormParameters
</span><span class=
"p">()
</span> <span class=
"p">{
</span>
693 <span class=
"k">parent
</span><span class=
"o">::
</span><span class=
"na">readFormParameters
</span><span class=
"p">();
</span>
695 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"nb">isset
</span><span class=
"p">(
</span><span class=
"nv">$_POST
</span><span class=
"p">[
</span><span class=
"s1">'firstName'
</span><span class=
"p">]))
</span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">firstName
</span> <span class=
"o">=
</span> <span class=
"nx">StringUtil
</span><span class=
"o">::
</span><span class=
"na">trim
</span><span class=
"p">(
</span><span class=
"nv">$_POST
</span><span class=
"p">[
</span><span class=
"s1">'firstName'
</span><span class=
"p">]);
</span>
696 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"nb">isset
</span><span class=
"p">(
</span><span class=
"nv">$_POST
</span><span class=
"p">[
</span><span class=
"s1">'lastName'
</span><span class=
"p">]))
</span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">lastName
</span> <span class=
"o">=
</span> <span class=
"nx">StringUtil
</span><span class=
"o">::
</span><span class=
"na">trim
</span><span class=
"p">(
</span><span class=
"nv">$_POST
</span><span class=
"p">[
</span><span class=
"s1">'lastName'
</span><span class=
"p">]);
</span>
697 <span class=
"p">}
</span>
702 <span class=
"k">public
</span> <span class=
"k">function
</span> <span class=
"nf">save
</span><span class=
"p">()
</span> <span class=
"p">{
</span>
703 <span class=
"k">parent
</span><span class=
"o">::
</span><span class=
"na">save
</span><span class=
"p">();
</span>
705 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">objectAction
</span> <span class=
"o">=
</span> <span class=
"k">new
</span> <span class=
"nx">PersonAction
</span><span class=
"p">([],
</span> <span class=
"s1">'create'
</span><span class=
"p">,
</span> <span class=
"p">[
</span>
706 <span class=
"s1">'data'
</span> <span class=
"o">=
></span> <span class=
"nb">array_merge
</span><span class=
"p">(
</span><span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">additionalFields
</span><span class=
"p">,
</span> <span class=
"p">[
</span>
707 <span class=
"s1">'firstName'
</span> <span class=
"o">=
></span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">firstName
</span><span class=
"p">,
</span>
708 <span class=
"s1">'lastName'
</span> <span class=
"o">=
></span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">lastName
</span>
709 <span class=
"p">])
</span>
710 <span class=
"p">]);
</span>
711 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">objectAction
</span><span class=
"o">-
></span><span class=
"na">executeAction
</span><span class=
"p">();
</span>
713 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">saved
</span><span class=
"p">();
</span>
715 <span class=
"c1">// reset values
</span>
716 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">firstName
</span> <span class=
"o">=
</span> <span class=
"s1">''
</span><span class=
"p">;
</span>
717 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">lastName
</span> <span class=
"o">=
</span> <span class=
"s1">''
</span><span class=
"p">;
</span>
719 <span class=
"c1">// show success message
</span>
720 <span class=
"nx">WCF
</span><span class=
"o">::
</span><span class=
"na">getTPL
</span><span class=
"p">()
</span><span class=
"o">-
></span><span class=
"na">assign
</span><span class=
"p">(
</span><span class=
"s1">'success'
</span><span class=
"p">,
</span> <span class=
"kc">true
</span><span class=
"p">);
</span>
721 <span class=
"p">}
</span>
726 <span class=
"k">public
</span> <span class=
"k">function
</span> <span class=
"nf">validate
</span><span class=
"p">()
</span> <span class=
"p">{
</span>
727 <span class=
"k">parent
</span><span class=
"o">::
</span><span class=
"na">validate
</span><span class=
"p">();
</span>
729 <span class=
"c1">// validate first name
</span>
730 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"k">empty
</span><span class=
"p">(
</span><span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">firstName
</span><span class=
"p">))
</span> <span class=
"p">{
</span>
731 <span class=
"k">throw
</span> <span class=
"k">new
</span> <span class=
"nx">UserInputException
</span><span class=
"p">(
</span><span class=
"s1">'firstName'
</span><span class=
"p">);
</span>
732 <span class=
"p">}
</span>
733 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"nb">mb_strlen
</span><span class=
"p">(
</span><span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">firstName
</span><span class=
"p">)
</span> <span class=
"o">></span> <span class=
"mi">255</span><span class=
"p">)
</span> <span class=
"p">{
</span>
734 <span class=
"k">throw
</span> <span class=
"k">new
</span> <span class=
"nx">UserInputException
</span><span class=
"p">(
</span><span class=
"s1">'firstName'
</span><span class=
"p">,
</span> <span class=
"s1">'tooLong'
</span><span class=
"p">);
</span>
735 <span class=
"p">}
</span>
737 <span class=
"c1">// validate last name
</span>
738 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"k">empty
</span><span class=
"p">(
</span><span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">lastName
</span><span class=
"p">))
</span> <span class=
"p">{
</span>
739 <span class=
"k">throw
</span> <span class=
"k">new
</span> <span class=
"nx">UserInputException
</span><span class=
"p">(
</span><span class=
"s1">'lastName'
</span><span class=
"p">);
</span>
740 <span class=
"p">}
</span>
741 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"nb">mb_strlen
</span><span class=
"p">(
</span><span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">lastName
</span><span class=
"p">)
</span> <span class=
"o">></span> <span class=
"mi">255</span><span class=
"p">)
</span> <span class=
"p">{
</span>
742 <span class=
"k">throw
</span> <span class=
"k">new
</span> <span class=
"nx">UserInputException
</span><span class=
"p">(
</span><span class=
"s1">'lastName'
</span><span class=
"p">,
</span> <span class=
"s1">'tooLong'
</span><span class=
"p">);
</span>
743 <span class=
"p">}
</span>
744 <span class=
"p">}
</span>
745 <span class=
"p">}
</span></code></pre></figure>
747 <figure class=
"highlight"><pre><code class=
"language-php" data-lang=
"php"><span class=
"cp"><?php
</span>
748 <span class=
"kn">namespace
</span> <span class=
"nn">wcf\acp\form
</span><span class=
"p">;
</span>
749 <span class=
"kn">use
</span> <span class=
"nn">wcf\data\person\Person
</span><span class=
"p">;
</span>
750 <span class=
"kn">use
</span> <span class=
"nn">wcf\data\person\PersonAction
</span><span class=
"p">;
</span>
751 <span class=
"kn">use
</span> <span class=
"nn">wcf\form\AbstractForm
</span><span class=
"p">;
</span>
752 <span class=
"kn">use
</span> <span class=
"nn">wcf\system\exception\IllegalLinkException
</span><span class=
"p">;
</span>
753 <span class=
"kn">use
</span> <span class=
"nn">wcf\system\WCF
</span><span class=
"p">;
</span>
756 * Shows the form to edit an existing person.
758 * @author Matthias Schmidt
759 * @copyright
2001-
2019 WoltLab GmbH
760 * @license GNU Lesser General Public License
<http://opensource.org/licenses/lgpl-license.php
>
761 * @package WoltLabSuite\Core\Acp\Form
763 <span class=
"kd">class
</span> <span class=
"nc">PersonEditForm
</span> <span class=
"k">extends
</span> <span class=
"nx">PersonAddForm
</span> <span class=
"p">{
</span>
767 <span class=
"k">public
</span> <span class=
"nv">$activeMenuItem
</span> <span class=
"o">=
</span> <span class=
"s1">'wcf.acp.menu.link.person'
</span><span class=
"p">;
</span>
770 * edited person object
773 <span class=
"k">public
</span> <span class=
"nv">$person
</span> <span class=
"o">=
</span> <span class=
"kc">null
</span><span class=
"p">;
</span>
776 * id of the edited person
779 <span class=
"k">public
</span> <span class=
"nv">$personID
</span> <span class=
"o">=
</span> <span class=
"mi">0</span><span class=
"p">;
</span>
784 <span class=
"k">public
</span> <span class=
"k">function
</span> <span class=
"nf">assignVariables
</span><span class=
"p">()
</span> <span class=
"p">{
</span>
785 <span class=
"k">parent
</span><span class=
"o">::
</span><span class=
"na">assignVariables
</span><span class=
"p">();
</span>
787 <span class=
"nx">WCF
</span><span class=
"o">::
</span><span class=
"na">getTPL
</span><span class=
"p">()
</span><span class=
"o">-
></span><span class=
"na">assign
</span><span class=
"p">([
</span>
788 <span class=
"s1">'action'
</span> <span class=
"o">=
></span> <span class=
"s1">'edit'
</span><span class=
"p">,
</span>
789 <span class=
"s1">'person'
</span> <span class=
"o">=
></span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">person
</span>
790 <span class=
"p">]);
</span>
791 <span class=
"p">}
</span>
796 <span class=
"k">public
</span> <span class=
"k">function
</span> <span class=
"nf">readData
</span><span class=
"p">()
</span> <span class=
"p">{
</span>
797 <span class=
"k">parent
</span><span class=
"o">::
</span><span class=
"na">readData
</span><span class=
"p">();
</span>
799 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"k">empty
</span><span class=
"p">(
</span><span class=
"nv">$_POST
</span><span class=
"p">))
</span> <span class=
"p">{
</span>
800 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">firstName
</span> <span class=
"o">=
</span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">person
</span><span class=
"o">-
></span><span class=
"na">firstName
</span><span class=
"p">;
</span>
801 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">lastName
</span> <span class=
"o">=
</span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">person
</span><span class=
"o">-
></span><span class=
"na">lastName
</span><span class=
"p">;
</span>
802 <span class=
"p">}
</span>
803 <span class=
"p">}
</span>
808 <span class=
"k">public
</span> <span class=
"k">function
</span> <span class=
"nf">readParameters
</span><span class=
"p">()
</span> <span class=
"p">{
</span>
809 <span class=
"k">parent
</span><span class=
"o">::
</span><span class=
"na">readParameters
</span><span class=
"p">();
</span>
811 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"nb">isset
</span><span class=
"p">(
</span><span class=
"nv">$_REQUEST
</span><span class=
"p">[
</span><span class=
"s1">'id'
</span><span class=
"p">]))
</span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">personID
</span> <span class=
"o">=
</span> <span class=
"nb">intval
</span><span class=
"p">(
</span><span class=
"nv">$_REQUEST
</span><span class=
"p">[
</span><span class=
"s1">'id'
</span><span class=
"p">]);
</span>
812 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">person
</span> <span class=
"o">=
</span> <span class=
"k">new
</span> <span class=
"nx">Person
</span><span class=
"p">(
</span><span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">personID
</span><span class=
"p">);
</span>
813 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"o">!
</span><span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">person
</span><span class=
"o">-
></span><span class=
"na">personID
</span><span class=
"p">)
</span> <span class=
"p">{
</span>
814 <span class=
"k">throw
</span> <span class=
"k">new
</span> <span class=
"nx">IllegalLinkException
</span><span class=
"p">();
</span>
815 <span class=
"p">}
</span>
816 <span class=
"p">}
</span>
821 <span class=
"k">public
</span> <span class=
"k">function
</span> <span class=
"nf">save
</span><span class=
"p">()
</span> <span class=
"p">{
</span>
822 <span class=
"nx">AbstractForm
</span><span class=
"o">::
</span><span class=
"na">save
</span><span class=
"p">();
</span>
824 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">objectAction
</span> <span class=
"o">=
</span> <span class=
"k">new
</span> <span class=
"nx">PersonAction
</span><span class=
"p">([
</span><span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">person
</span><span class=
"p">],
</span> <span class=
"s1">'update'
</span><span class=
"p">,
</span> <span class=
"p">[
</span>
825 <span class=
"s1">'data'
</span> <span class=
"o">=
></span> <span class=
"nb">array_merge
</span><span class=
"p">(
</span><span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">additionalFields
</span><span class=
"p">,
</span> <span class=
"p">[
</span>
826 <span class=
"s1">'firstName'
</span> <span class=
"o">=
></span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">firstName
</span><span class=
"p">,
</span>
827 <span class=
"s1">'lastName'
</span> <span class=
"o">=
></span> <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">lastName
</span>
828 <span class=
"p">])
</span>
829 <span class=
"p">]);
</span>
830 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">objectAction
</span><span class=
"o">-
></span><span class=
"na">executeAction
</span><span class=
"p">();
</span>
832 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">saved
</span><span class=
"p">();
</span>
834 <span class=
"c1">// show success message
</span>
835 <span class=
"nx">WCF
</span><span class=
"o">::
</span><span class=
"na">getTPL
</span><span class=
"p">()
</span><span class=
"o">-
></span><span class=
"na">assign
</span><span class=
"p">(
</span><span class=
"s1">'success'
</span><span class=
"p">,
</span> <span class=
"kc">true
</span><span class=
"p">);
</span>
836 <span class=
"p">}
</span>
837 <span class=
"p">}
</span></code></pre></figure>
839 <figure class=
"highlight"><pre><code class=
"language-php" data-lang=
"php"><span class=
"p">{
</span><span class=
"k">include
</span> <span class=
"nb">file
</span><span class=
"o">=
</span><span class=
"s1">'header'
</span> <span class=
"nx">pageTitle
</span><span class=
"o">=
</span><span class=
"s1">'wcf.acp.person.'
</span><span class=
"o">|
</span><span class=
"nx">concat
</span><span class=
"o">:
</span><span class=
"nv">$action
</span><span class=
"p">}
</span>
841 <span class=
"o"><</span><span class=
"nb">header
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"contentHeader"</span><span class=
"o">></span>
842 <span class=
"o"><</span><span class=
"nx">div
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"contentHeaderTitle"</span><span class=
"o">></span>
843 <span class=
"o"><</span><span class=
"nx">h1
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"contentTitle"</span><span class=
"o">></span><span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"nx">acp
</span><span class=
"o">.
</span><span class=
"nx">person
</span><span class=
"o">.
</span><span class=
"p">{
</span><span class=
"nv">$action
</span><span class=
"p">}{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"o"></
</span><span class=
"nx">h1
</span><span class=
"o">></span>
844 <span class=
"o"></
</span><span class=
"nx">div
</span><span class=
"o">></span>
846 <span class=
"o"><</span><span class=
"nx">nav
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"contentHeaderNavigation"</span><span class=
"o">></span>
847 <span class=
"o"><</span><span class=
"nx">ul
</span><span class=
"o">></span>
848 <span class=
"o"><</span><span class=
"nx">li
</span><span class=
"o">><</span><span class=
"nx">a
</span> <span class=
"nx">href
</span><span class=
"o">=
</span><span class=
"s2">"{link controller='PersonList'}</span><span class="si
">{</span><span class="nv
">/link</span><span class="si
">}</span><span class="s2
">"</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"button"</span><span class=
"o">><</span><span class=
"nx">span
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"icon icon16 fa-list"</span><span class=
"o">></
</span><span class=
"nx">span
</span><span class=
"o">></span> <span class=
"o"><</span><span class=
"nx">span
</span><span class=
"o">></span><span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"nx">acp
</span><span class=
"o">.
</span><span class=
"nx">menu
</span><span class=
"o">.
</span><span class=
"nb">link
</span><span class=
"o">.
</span><span class=
"nx">person
</span><span class=
"o">.
</span><span class=
"k">list
</span><span class=
"p">{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"o"></
</span><span class=
"nx">span
</span><span class=
"o">></
</span><span class=
"nx">a
</span><span class=
"o">></
</span><span class=
"nx">li
</span><span class=
"o">></span>
850 <span class=
"p">{
</span><span class=
"nx">event
</span> <span class=
"nx">name
</span><span class=
"o">=
</span><span class=
"s1">'contentHeaderNavigation'
</span><span class=
"p">}
</span>
851 <span class=
"o"></
</span><span class=
"nx">ul
</span><span class=
"o">></span>
852 <span class=
"o"></
</span><span class=
"nx">nav
</span><span class=
"o">></span>
853 <span class=
"o"></
</span><span class=
"nb">header
</span><span class=
"o">></span>
855 <span class=
"p">{
</span><span class=
"k">include
</span> <span class=
"nb">file
</span><span class=
"o">=
</span><span class=
"s1">'formError'
</span><span class=
"p">}
</span>
857 <span class=
"p">{
</span><span class=
"k">if
</span> <span class=
"nv">$success
</span><span class=
"o">|
</span><span class=
"nb">isset
</span><span class=
"p">}
</span>
858 <span class=
"o"><</span><span class=
"nx">p
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"success"</span><span class=
"o">></span><span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"k">global
</span><span class=
"o">.
</span><span class=
"nx">success
</span><span class=
"o">.
</span><span class=
"p">{
</span><span class=
"nv">$action
</span><span class=
"p">}{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"o"></
</span><span class=
"nx">p
</span><span class=
"o">></span>
859 <span class=
"p">{
</span><span class=
"o">/
</span><span class=
"k">if
</span><span class=
"p">}
</span>
861 <span class=
"o"><</span><span class=
"nx">form
</span> <span class=
"nx">method
</span><span class=
"o">=
</span><span class=
"s2">"post"</span> <span class=
"nx">action
</span><span class=
"o">=
</span><span class=
"s2">"{if </span><span class="nv
">$action</span><span class="s2
"> == 'add'}{link controller='PersonAdd'}</span><span class="si
">{</span><span class="nv
">/link}{else</span><span class="si
">}</span><span class="s2
">{link controller='PersonEdit' object=</span><span class="nv
">$person</span><span class="s2
">}</span><span class="si
">{</span><span class="nv
">/link}{/if</span><span class="si
">}</span><span class="s2
">"</span><span class=
"o">></span>
862 <span class=
"o"><</span><span class=
"nx">div
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"section"</span><span class=
"o">></span>
863 <span class=
"o"><</span><span class=
"nb">dl
</span><span class=
"p">{
</span><span class=
"k">if
</span> <span class=
"nv">$errorField
</span> <span class=
"o">==
</span> <span class=
"s1">'firstName'
</span><span class=
"p">}
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"formError"</span><span class=
"p">{
</span><span class=
"o">/
</span><span class=
"k">if
</span><span class=
"p">}
</span><span class=
"o">></span>
864 <span class=
"o"><</span><span class=
"nx">dt
</span><span class=
"o">><</span><span class=
"nx">label
</span> <span class=
"k">for
</span><span class=
"o">=
</span><span class=
"s2">"firstName"</span><span class=
"o">></span><span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"nx">person
</span><span class=
"o">.
</span><span class=
"nx">firstName
</span><span class=
"p">{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"o"></
</span><span class=
"nx">label
</span><span class=
"o">></
</span><span class=
"nx">dt
</span><span class=
"o">></span>
865 <span class=
"o"><</span><span class=
"nx">dd
</span><span class=
"o">></span>
866 <span class=
"o"><</span><span class=
"nx">input
</span> <span class=
"nx">type
</span><span class=
"o">=
</span><span class=
"s2">"text"</span> <span class=
"nx">id
</span><span class=
"o">=
</span><span class=
"s2">"firstName"</span> <span class=
"nx">name
</span><span class=
"o">=
</span><span class=
"s2">"firstName"</span> <span class=
"nx">value
</span><span class=
"o">=
</span><span class=
"s2">"</span><span class="si
">{</span><span class="nv
">$firstName</span><span class="si
">}</span><span class="s2
">"</span> <span class=
"nx">required
</span> <span class=
"nx">autofocus
</span> <span class=
"nx">maxlength
</span><span class=
"o">=
</span><span class=
"s2">"255"</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"long"</span><span class=
"o">></span>
867 <span class=
"p">{
</span><span class=
"k">if
</span> <span class=
"nv">$errorField
</span> <span class=
"o">==
</span> <span class=
"s1">'firstName'
</span><span class=
"p">}
</span>
868 <span class=
"o"><</span><span class=
"nx">small
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"innerError"</span><span class=
"o">></span>
869 <span class=
"p">{
</span><span class=
"k">if
</span> <span class=
"nv">$errorType
</span> <span class=
"o">==
</span> <span class=
"s1">'empty'
</span><span class=
"p">}
</span>
870 <span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"k">global
</span><span class=
"o">.
</span><span class=
"nx">form
</span><span class=
"o">.
</span><span class=
"nx">error
</span><span class=
"o">.
</span><span class=
"k">empty
</span><span class=
"p">{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span>
871 <span class=
"p">{
</span><span class=
"k">else
</span><span class=
"p">}
</span>
872 <span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"nx">acp
</span><span class=
"o">.
</span><span class=
"nx">person
</span><span class=
"o">.
</span><span class=
"nx">firstName
</span><span class=
"o">.
</span><span class=
"nx">error
</span><span class=
"o">.
</span><span class=
"p">{
</span><span class=
"nv">$errorType
</span><span class=
"p">}{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span>
873 <span class=
"p">{
</span><span class=
"o">/
</span><span class=
"k">if
</span><span class=
"p">}
</span>
874 <span class=
"o"></
</span><span class=
"nx">small
</span><span class=
"o">></span>
875 <span class=
"p">{
</span><span class=
"o">/
</span><span class=
"k">if
</span><span class=
"p">}
</span>
876 <span class=
"o"></
</span><span class=
"nx">dd
</span><span class=
"o">></span>
877 <span class=
"o"></
</span><span class=
"nb">dl
</span><span class=
"o">></span>
879 <span class=
"o"><</span><span class=
"nb">dl
</span><span class=
"p">{
</span><span class=
"k">if
</span> <span class=
"nv">$errorField
</span> <span class=
"o">==
</span> <span class=
"s1">'lastName'
</span><span class=
"p">}
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"formError"</span><span class=
"p">{
</span><span class=
"o">/
</span><span class=
"k">if
</span><span class=
"p">}
</span><span class=
"o">></span>
880 <span class=
"o"><</span><span class=
"nx">dt
</span><span class=
"o">><</span><span class=
"nx">label
</span> <span class=
"k">for
</span><span class=
"o">=
</span><span class=
"s2">"lastName"</span><span class=
"o">></span><span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"nx">person
</span><span class=
"o">.
</span><span class=
"nx">lastName
</span><span class=
"p">{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"o"></
</span><span class=
"nx">label
</span><span class=
"o">></
</span><span class=
"nx">dt
</span><span class=
"o">></span>
881 <span class=
"o"><</span><span class=
"nx">dd
</span><span class=
"o">></span>
882 <span class=
"o"><</span><span class=
"nx">input
</span> <span class=
"nx">type
</span><span class=
"o">=
</span><span class=
"s2">"text"</span> <span class=
"nx">id
</span><span class=
"o">=
</span><span class=
"s2">"lastName"</span> <span class=
"nx">name
</span><span class=
"o">=
</span><span class=
"s2">"lastName"</span> <span class=
"nx">value
</span><span class=
"o">=
</span><span class=
"s2">"</span><span class="si
">{</span><span class="nv
">$lastName</span><span class="si
">}</span><span class="s2
">"</span> <span class=
"nx">required
</span> <span class=
"nx">maxlength
</span><span class=
"o">=
</span><span class=
"s2">"255"</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"long"</span><span class=
"o">></span>
883 <span class=
"p">{
</span><span class=
"k">if
</span> <span class=
"nv">$errorField
</span> <span class=
"o">==
</span> <span class=
"s1">'lastName'
</span><span class=
"p">}
</span>
884 <span class=
"o"><</span><span class=
"nx">small
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"innerError"</span><span class=
"o">></span>
885 <span class=
"p">{
</span><span class=
"k">if
</span> <span class=
"nv">$errorType
</span> <span class=
"o">==
</span> <span class=
"s1">'empty'
</span><span class=
"p">}
</span>
886 <span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"k">global
</span><span class=
"o">.
</span><span class=
"nx">form
</span><span class=
"o">.
</span><span class=
"nx">error
</span><span class=
"o">.
</span><span class=
"k">empty
</span><span class=
"p">{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span>
887 <span class=
"p">{
</span><span class=
"k">else
</span><span class=
"p">}
</span>
888 <span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"nx">acp
</span><span class=
"o">.
</span><span class=
"nx">person
</span><span class=
"o">.
</span><span class=
"nx">lastName
</span><span class=
"o">.
</span><span class=
"nx">error
</span><span class=
"o">.
</span><span class=
"p">{
</span><span class=
"nv">$errorType
</span><span class=
"p">}{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span>
889 <span class=
"p">{
</span><span class=
"o">/
</span><span class=
"k">if
</span><span class=
"p">}
</span>
890 <span class=
"o"></
</span><span class=
"nx">small
</span><span class=
"o">></span>
891 <span class=
"p">{
</span><span class=
"o">/
</span><span class=
"k">if
</span><span class=
"p">}
</span>
892 <span class=
"o"></
</span><span class=
"nx">dd
</span><span class=
"o">></span>
893 <span class=
"o"></
</span><span class=
"nb">dl
</span><span class=
"o">></span>
895 <span class=
"p">{
</span><span class=
"nx">event
</span> <span class=
"nx">name
</span><span class=
"o">=
</span><span class=
"s1">'dataFields'
</span><span class=
"p">}
</span>
896 <span class=
"o"></
</span><span class=
"nx">div
</span><span class=
"o">></span>
898 <span class=
"p">{
</span><span class=
"nx">event
</span> <span class=
"nx">name
</span><span class=
"o">=
</span><span class=
"s1">'sections'
</span><span class=
"p">}
</span>
900 <span class=
"o"><</span><span class=
"nx">div
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"formSubmit"</span><span class=
"o">></span>
901 <span class=
"o"><</span><span class=
"nx">input
</span> <span class=
"nx">type
</span><span class=
"o">=
</span><span class=
"s2">"submit"</span> <span class=
"nx">value
</span><span class=
"o">=
</span><span class=
"s2">"</span><span class="si
">{</span><span class="nv
">lang}wcf.global.button.submit{/lang</span><span class="si
">}</span><span class="s2
">"</span> <span class=
"nx">accesskey
</span><span class=
"o">=
</span><span class=
"s2">"s"</span><span class=
"o">></span>
902 <span class=
"p">{
</span><span class=
"o">@
</span><span class=
"nx">SECURITY_TOKEN_INPUT_TAG
</span><span class=
"p">}
</span>
903 <span class=
"o"></
</span><span class=
"nx">div
</span><span class=
"o">></span>
904 <span class=
"o"></
</span><span class=
"nx">form
</span><span class=
"o">></span>
906 <span class=
"p">{
</span><span class=
"k">include
</span> <span class=
"nb">file
</span><span class=
"o">=
</span><span class=
"s1">'footer'
</span><span class=
"p">}
</span></code></pre></figure>
908 <p>Updating the template is easy as the complete form is replace by a single line of code:
</p>
910 <figure class=
"highlight"><pre><code class=
"language-php" data-lang=
"php"><span class=
"p">{
</span><span class=
"k">include
</span> <span class=
"nb">file
</span><span class=
"o">=
</span><span class=
"s1">'header'
</span> <span class=
"nx">pageTitle
</span><span class=
"o">=
</span><span class=
"s1">'wcf.acp.person.'
</span><span class=
"o">|
</span><span class=
"nx">concat
</span><span class=
"o">:
</span><span class=
"nv">$action
</span><span class=
"p">}
</span>
912 <span class=
"o"><</span><span class=
"nb">header
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"contentHeader"</span><span class=
"o">></span>
913 <span class=
"o"><</span><span class=
"nx">div
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"contentHeaderTitle"</span><span class=
"o">></span>
914 <span class=
"o"><</span><span class=
"nx">h1
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"contentTitle"</span><span class=
"o">></span><span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"nx">acp
</span><span class=
"o">.
</span><span class=
"nx">person
</span><span class=
"o">.
</span><span class=
"p">{
</span><span class=
"nv">$action
</span><span class=
"p">}{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"o"></
</span><span class=
"nx">h1
</span><span class=
"o">></span>
915 <span class=
"o"></
</span><span class=
"nx">div
</span><span class=
"o">></span>
917 <span class=
"o"><</span><span class=
"nx">nav
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"contentHeaderNavigation"</span><span class=
"o">></span>
918 <span class=
"o"><</span><span class=
"nx">ul
</span><span class=
"o">></span>
919 <span class=
"o"><</span><span class=
"nx">li
</span><span class=
"o">><</span><span class=
"nx">a
</span> <span class=
"nx">href
</span><span class=
"o">=
</span><span class=
"s2">"{link controller='PersonList'}</span><span class="si
">{</span><span class="nv
">/link</span><span class="si
">}</span><span class="s2
">"</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"button"</span><span class=
"o">><</span><span class=
"nx">span
</span> <span class=
"nx">class
</span><span class=
"o">=
</span><span class=
"s2">"icon icon16 fa-list"</span><span class=
"o">></
</span><span class=
"nx">span
</span><span class=
"o">></span> <span class=
"o"><</span><span class=
"nx">span
</span><span class=
"o">></span><span class=
"p">{
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"nx">wcf
</span><span class=
"o">.
</span><span class=
"nx">acp
</span><span class=
"o">.
</span><span class=
"nx">menu
</span><span class=
"o">.
</span><span class=
"nb">link
</span><span class=
"o">.
</span><span class=
"nx">person
</span><span class=
"o">.
</span><span class=
"k">list
</span><span class=
"p">{
</span><span class=
"o">/
</span><span class=
"nx">lang
</span><span class=
"p">}
</span><span class=
"o"></
</span><span class=
"nx">span
</span><span class=
"o">></
</span><span class=
"nx">a
</span><span class=
"o">></
</span><span class=
"nx">li
</span><span class=
"o">></span>
921 <span class=
"p">{
</span><span class=
"nx">event
</span> <span class=
"nx">name
</span><span class=
"o">=
</span><span class=
"s1">'contentHeaderNavigation'
</span><span class=
"p">}
</span>
922 <span class=
"o"></
</span><span class=
"nx">ul
</span><span class=
"o">></span>
923 <span class=
"o"></
</span><span class=
"nx">nav
</span><span class=
"o">></span>
924 <span class=
"o"></
</span><span class=
"nb">header
</span><span class=
"o">></span>
926 <span class=
"p">{
</span><span class=
"o">@
</span><span class=
"nv">$form
</span><span class=
"o">-
></span><span class=
"na">getHtml
</span><span class=
"p">()}
</span>
928 <span class=
"p">{
</span><span class=
"k">include
</span> <span class=
"nb">file
</span><span class=
"o">=
</span><span class=
"s1">'footer'
</span><span class=
"p">}
</span></code></pre></figure>
930 <p><code class=
"language-plaintext highlighter-rouge">PersonEditForm
</code> also becomes much simpler:
931 only the edited
<code class=
"language-plaintext highlighter-rouge">Person
</code> object must be read:
</p>
933 <figure class=
"highlight"><pre><code class=
"language-php" data-lang=
"php"><span class=
"cp"><?php
</span>
934 <span class=
"kn">namespace
</span> <span class=
"nn">wcf\acp\form
</span><span class=
"p">;
</span>
935 <span class=
"kn">use
</span> <span class=
"nn">wcf\data\person\Person
</span><span class=
"p">;
</span>
936 <span class=
"kn">use
</span> <span class=
"nn">wcf\system\exception\IllegalLinkException
</span><span class=
"p">;
</span>
939 * Shows the form to edit an existing person.
941 * @author Matthias Schmidt
942 * @copyright
2001-
2019 WoltLab GmbH
943 * @license GNU Lesser General Public License
<http://opensource.org/licenses/lgpl-license.php
>
944 * @package WoltLabSuite\Core\Acp\Form
946 <span class=
"kd">class
</span> <span class=
"nc">PersonEditForm
</span> <span class=
"k">extends
</span> <span class=
"nx">PersonAddForm
</span> <span class=
"p">{
</span>
950 <span class=
"k">public
</span> <span class=
"nv">$activeMenuItem
</span> <span class=
"o">=
</span> <span class=
"s1">'wcf.acp.menu.link.person'
</span><span class=
"p">;
</span>
955 <span class=
"k">public
</span> <span class=
"k">function
</span> <span class=
"nf">readParameters
</span><span class=
"p">()
</span> <span class=
"p">{
</span>
956 <span class=
"k">parent
</span><span class=
"o">::
</span><span class=
"na">readParameters
</span><span class=
"p">();
</span>
958 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"nb">isset
</span><span class=
"p">(
</span><span class=
"nv">$_REQUEST
</span><span class=
"p">[
</span><span class=
"s1">'id'
</span><span class=
"p">]))
</span> <span class=
"p">{
</span>
959 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">formObject
</span> <span class=
"o">=
</span> <span class=
"k">new
</span> <span class=
"nx">Person
</span><span class=
"p">(
</span><span class=
"nb">intval
</span><span class=
"p">(
</span><span class=
"nv">$_REQUEST
</span><span class=
"p">[
</span><span class=
"s1">'id'
</span><span class=
"p">]));
</span>
960 <span class=
"k">if
</span> <span class=
"p">(
</span><span class=
"o">!
</span><span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">formObject
</span><span class=
"o">-
></span><span class=
"na">personID
</span><span class=
"p">)
</span> <span class=
"p">{
</span>
961 <span class=
"k">throw
</span> <span class=
"k">new
</span> <span class=
"nx">IllegalLinkException
</span><span class=
"p">();
</span>
962 <span class=
"p">}
</span>
963 <span class=
"p">}
</span>
964 <span class=
"p">}
</span>
965 <span class=
"p">}
</span></code></pre></figure>
967 <p>Most of the work is done in
<code class=
"language-plaintext highlighter-rouge">PersonAddForm
</code>:
</p>
969 <figure class=
"highlight"><pre><code class=
"language-php" data-lang=
"php"><span class=
"cp"><?php
</span>
970 <span class=
"kn">namespace
</span> <span class=
"nn">wcf\acp\form
</span><span class=
"p">;
</span>
971 <span class=
"kn">use
</span> <span class=
"nn">wcf\data\person\PersonAction
</span><span class=
"p">;
</span>
972 <span class=
"kn">use
</span> <span class=
"nn">wcf\form\AbstractFormBuilderForm
</span><span class=
"p">;
</span>
973 <span class=
"kn">use
</span> <span class=
"nn">wcf\system\form\builder\container\FormContainer
</span><span class=
"p">;
</span>
974 <span class=
"kn">use
</span> <span class=
"nn">wcf\system\form\builder\field\TextFormField
</span><span class=
"p">;
</span>
977 * Shows the form to create a new person.
979 * @author Matthias Schmidt
980 * @copyright
2001-
2019 WoltLab GmbH
981 * @license GNU Lesser General Public License
<http://opensource.org/licenses/lgpl-license.php
>
982 * @package WoltLabSuite\Core\Acp\Form
984 <span class=
"kd">class
</span> <span class=
"nc">PersonAddForm
</span> <span class=
"k">extends
</span> <span class=
"nx">AbstractFormBuilderForm
</span> <span class=
"p">{
</span>
988 <span class=
"k">public
</span> <span class=
"nv">$activeMenuItem
</span> <span class=
"o">=
</span> <span class=
"s1">'wcf.acp.menu.link.person.add'
</span><span class=
"p">;
</span>
993 <span class=
"k">public
</span> <span class=
"nv">$formAction
</span> <span class=
"o">=
</span> <span class=
"s1">'create'
</span><span class=
"p">;
</span>
998 <span class=
"k">public
</span> <span class=
"nv">$neededPermissions
</span> <span class=
"o">=
</span> <span class=
"p">[
</span><span class=
"s1">'admin.content.canManagePeople'
</span><span class=
"p">];
</span>
1000 <span class=
"cd">/**
1003 <span class=
"k">public
</span> <span class=
"nv">$objectActionClass
</span> <span class=
"o">=
</span> <span class=
"nx">PersonAction
</span><span class=
"o">::
</span><span class=
"na">class
</span><span class=
"p">;
</span>
1005 <span class=
"cd">/**
1008 <span class=
"k">protected
</span> <span class=
"k">function
</span> <span class=
"nf">createForm
</span><span class=
"p">()
</span> <span class=
"p">{
</span>
1009 <span class=
"k">parent
</span><span class=
"o">::
</span><span class=
"na">createForm
</span><span class=
"p">();
</span>
1011 <span class=
"nv">$dataContainer
</span> <span class=
"o">=
</span> <span class=
"nx">FormContainer
</span><span class=
"o">::
</span><span class=
"na">create
</span><span class=
"p">(
</span><span class=
"s1">'data'
</span><span class=
"p">)
</span>
1012 <span class=
"o">-
></span><span class=
"na">appendChildren
</span><span class=
"p">([
</span>
1013 <span class=
"nx">TextFormField
</span><span class=
"o">::
</span><span class=
"na">create
</span><span class=
"p">(
</span><span class=
"s1">'firstName'
</span><span class=
"p">)
</span>
1014 <span class=
"o">-
></span><span class=
"na">label
</span><span class=
"p">(
</span><span class=
"s1">'wcf.person.firstName'
</span><span class=
"p">)
</span>
1015 <span class=
"o">-
></span><span class=
"na">required
</span><span class=
"p">()
</span>
1016 <span class=
"o">-
></span><span class=
"na">maximumLength
</span><span class=
"p">(
</span><span class=
"mi">255</span><span class=
"p">),
</span>
1018 <span class=
"nx">TextFormField
</span><span class=
"o">::
</span><span class=
"na">create
</span><span class=
"p">(
</span><span class=
"s1">'lastName'
</span><span class=
"p">)
</span>
1019 <span class=
"o">-
></span><span class=
"na">label
</span><span class=
"p">(
</span><span class=
"s1">'wcf.person.lastName'
</span><span class=
"p">)
</span>
1020 <span class=
"o">-
></span><span class=
"na">required
</span><span class=
"p">()
</span>
1021 <span class=
"o">-
></span><span class=
"na">maximumLength
</span><span class=
"p">(
</span><span class=
"mi">255</span><span class=
"p">)
</span>
1022 <span class=
"p">]);
</span>
1024 <span class=
"nv">$this
</span><span class=
"o">-
></span><span class=
"na">form
</span><span class=
"o">-
></span><span class=
"na">appendChild
</span><span class=
"p">(
</span><span class=
"nv">$dataContainer
</span><span class=
"p">);
</span>
1025 <span class=
"p">}
</span>
1026 <span class=
"p">}
</span></code></pre></figure>
1028 <p>But, as you can see, the number of lines almost decreased by half.
1029 All changes are due to extending
<code class=
"language-plaintext highlighter-rouge">AbstractFormBuilderForm
</code>:
</p>
1032 <li><code class=
"language-plaintext highlighter-rouge">$formAction
</code> is added and set to
<code class=
"language-plaintext highlighter-rouge">create
</code> as the form is used to create a new person.
1033 In the edit form,
<code class=
"language-plaintext highlighter-rouge">$formAction
</code> has not to be set explicitly as it is done automatically if a
<code class=
"language-plaintext highlighter-rouge">$formObject
</code> is set.
</li>
1034 <li><code class=
"language-plaintext highlighter-rouge">$objectActionClass
</code> is set to
<code class=
"language-plaintext highlighter-rouge">PersonAction::class
</code> and is the class name of the used
<code class=
"language-plaintext highlighter-rouge">AbstractForm::$objectAction
</code> object to create and update the
<code class=
"language-plaintext highlighter-rouge">Person
</code> object.
</li>
1035 <li><code class=
"language-plaintext highlighter-rouge">AbstractFormBuilderForm::createForm()
</code> is overridden and the form contents are added:
1036 a form container representing the
<code class=
"language-plaintext highlighter-rouge">div.section
</code> element from the old version and the two form fields with the same ids and labels as before.
1037 The contents of the old
<code class=
"language-plaintext highlighter-rouge">validate()
</code> method is put into two method calls:
1038 <code class=
"language-plaintext highlighter-rouge">required()
</code> to ensure that the form is filled out and
<code class=
"language-plaintext highlighter-rouge">maximumLength(
255)
</code> to ensure that the names are not longer than
255 characters.
</li>
1054 <div class=
"footerBox">
1055 <div class=
"container">
1056 <div class=
"footerBoxLeft">
1058 <a target=
"_blank" href=
"https://github.com/woltlab/woltlab.github.io/blob/master/pages/migration/wsc-31/migration_wsc-31_form-builder.md" class=
"btn btn-default githubEditButton no_icon" role=
"button"><i class=
"fa fa-github fa-lg"></i> Edit on GitHub
</a>
1059 <p>Site last generated: Mar
5,
2021</p>
1061 <div class=
"footerBoxRight">
1062 <a class=
"no_icon" href=
"https://www.woltlab.com"><img src=
"https://docs.woltlab.com/5.3/images/woltlab-black.png" srcset=
"https://docs.woltlab.com/5.3/images/woltlab-black@2x.png 2x" height=
"40" width=
"204" alt=
""></a>
1067 <div class=
"pageFooter">
1068 <div class=
"container">
1069 © 2001 ‐
2021 <a class=
"no_icon" href=
"https://www.woltlab.com">WoltLab GmbH
</a>. All rights reserved. |
<a class=
"no_icon" href=
"https://www.woltlab.com/legal-notice/">Legal Notice
</a> |
<a class=
"no_icon" href=
"https://www.woltlab.com/privacy-policy/">Privacy Policy
</a>