Elgg  Version 2.3
/root/Elgg/engine/classes/Elgg/FormsService.php

Convenience function for generating a form from a view in a standard location.This function assumes that the body of the form is located at "forms/$action" and sets the action by default to "action/$action". Automatically wraps the forms/$action view with a <form> tag and inserts the anti-csrf security tokens.

@tip This automatically appends elgg-form-action-name to the form's class. It replaces any slashes with dashes (blog/save becomes elgg-form-blog-save)

echo elgg_view_form('login');

This would assume a "login" form body to be at "forms/login" and would set the action of the form to "http://yoursite.com/action/login".

If elgg_view('forms/login') is: <input type="text" name="username" > <input type="password" name="password" >

Then elgg_view_form('login') generates: <form action="http://yoursite.com/action/login" method="post"> ...security tokens... <input type="text" name="username" > <input type="password" name="password" > </form>

Parameters
string$actionThe name of the action. An action name does not include the leading "action/". For example, "login" is an action name.
array$form_vars$vars passed to the "input/form" view
array$body_vars$vars passed to the "forms/<action>" view
Returns
string The complete form
<?php
namespace Elgg;
class FormsService {
private $views;
private $logger;
private $rendering;
private $footer = '';
public function __construct(ViewsService $views, Logger $logger) {
$this->views = $views;
$this->logger = $logger;
}
public function render($action, $form_vars = array(), $body_vars = array()) {
$defaults = array(
'action' => elgg_normalize_url("action/$action"),
);
// append elgg-form class to any class options set
$form_vars['class'] = (array) elgg_extract('class', $form_vars, []);
$form_vars['class'][] = 'elgg-form-' . preg_replace('/[^a-z0-9]/i', '-', $action);
$form_vars = array_merge($defaults, $form_vars);
$form_vars['action_name'] = $action;
if (!isset($form_vars['body'])) {
$this->rendering = true;
$this->footer = '';
// Render form body
$body = $this->views->renderView("forms/$action", $body_vars);
if (!empty($body)) {
// Grab the footer if one was set during form rendering
$body .= $this->views->renderView('elements/forms/footer', [
'footer' => $this->getFooter(),
'action_name' => $action,
]);
}
$this->rendering = false;
$form_vars['body'] = $body;
}
return elgg_view('input/form', $form_vars);
}
public function setFooter($footer = '') {
if (!$this->rendering) {
$this->logger->error('Form footer can only be set and retrieved during form rendering, '
. 'anywhere in elgg_view_form() call stack (e.g. form view, extending views, or view hooks)');
return false;
}
$this->footer = $footer;
return true;
}
public function getFooter() {
if (!$this->rendering) {
$this->logger->error('Form footer can only be set and retrieved during form rendering, '
. 'anywhere in elgg_view_form() call stack (e.g. form view, extending views, or view hooks)');
return false;
}
return $this->footer;
}
}
clearfix elgg elgg elgg elgg page elgg page footer
Definition: admin.css.php:132
$defaults
$body_vars
if(!elgg_instanceof($comment, 'object', 'comment')||! $comment->canEdit()) $form_vars
$footer
Wrap form footer @uses $vars['footer'] Form footer @uses $vars['action_name'] Action name.
Definition: footer.php:8
elgg_extract($key, $array, $default=null, $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
Definition: elgglib.php:1375
elgg_view($view, $vars=array(), $ignore1=false, $ignore2=false, $viewtype='')
Return a parsed view.
Definition: views.php:336
Save menu items.
elgg_normalize_url($url)
Definition: output.php:280
$action
Definition: full.php:133