Joomla Platform  13.1
Documentation des API du framework Joomla Platform
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
Référence de la classe JControllerForm
+ Graphe d'héritage de JControllerForm:
+ Graphe de collaboration de JControllerForm:

Liste de tous les membres

Fonctions membres publiques

 __construct ($config=array())
 add ()
 batch ($model)
 cancel ($key=null)
 edit ($key=null, $urlVar=null)
 getModel ($name= '', $prefix= '', $config=array('ignore_request'=> true))
 loadhistory ()
 save ($key=null, $urlVar=null)
- Fonctions membres publiques inherited from JControllerLegacy
 addViewPath ($path)
 authorise ($task)
 display ($cachable=false, $urlparams=array())
 execute ($task)
 getName ()
 getTask ()
 getTasks ()
 getView ($name= '', $type= '', $prefix= '', $config=array())
 redirect ()
 registerDefaultTask ($method)
 registerTask ($task, $method)
 unregisterTask ($task)
 setMessage ($text, $type= 'message')
 setRedirect ($url, $msg=null, $type=null)
- Fonctions membres publiques inherited from JObject
 __toString ()
 def ($property, $default=null)
 get ($property, $default=null)
 getProperties ($public=true)
 getError ($i=null, $toString=true)
 getErrors ()
 set ($property, $value=null)
 setProperties ($properties)
 setError ($error)

Fonctions membres protégées

 allowAdd ($data=array())
 allowEdit ($data=array(), $key= 'id')
 allowSave ($data, $key= 'id')
 getRedirectToItemAppend ($recordId=null, $urlVar= 'id')
 getRedirectToListAppend ()
 postSaveHook (JModelLegacy $model, $validData=array())
- Fonctions membres protégées inherited from JControllerLegacy
 addPath ($type, $path)
 checkEditId ($context, $id)
 createModel ($name, $prefix= '', $config=array())
 createView ($name, $prefix= '', $type= '', $config=array())
 holdEditId ($context, $id)
 releaseEditId ($context, $id)
 setPath ($type, $path)

Attributs protégés

 $context
 $option
 $view_item
 $view_list
 $text_prefix
- Attributs protégés inherited from JControllerLegacy
 $basePath
 $default_view
 $doTask
 $message
 $messageType
 $methods
 $name
 $model_prefix
 $paths
 $redirect
 $task
 $taskMap
 $input
- Attributs protégés inherited from JObject
 $_errors = array()

Additional Inherited Members

- Fonctions membres publiques statiques inherited from JControllerLegacy
static addModelPath ($path, $prefix= '')
static getInstance ($prefix, $config=array())
- Fonctions membres protégées statiques inherited from JControllerLegacy
static createFileName ($type, $parts=array())
- Attributs protégés statiques inherited from JControllerLegacy
static $instance

Description détaillée

Définition à la ligne 20 du fichier form.php.


Documentation des constructeurs et destructeur

JControllerForm::__construct (   $config = array())

Constructor.

Paramètres:
array$configAn optional associative array of configuration settings.
Voir également:
JControllerLegacy
Depuis:
12.2
Exceptions:
Exception

Réimplémentée à partir de JControllerLegacy.

Définition à la ligne 71 du fichier form.php.

Références JText\_().

{
// Guess the option as com_NameOfController
if (empty($this->option))
{
$this->option = 'com_' . strtolower($this->getName());
}
// Guess the JText message prefix. Defaults to the option.
if (empty($this->text_prefix))
{
$this->text_prefix = strtoupper($this->option);
}
// Guess the context as the suffix, eg: OptionControllerContent.
if (empty($this->context))
{
$r = null;
if (!preg_match('/(.*)Controller(.*)/i', get_class($this), $r))
{
throw new Exception(JText::_('JLIB_APPLICATION_ERROR_CONTROLLER_GET_NAME'), 500);
}
$this->context = strtolower($r[2]);
}
// Guess the item view as the context.
if (empty($this->view_item))
{
$this->view_item = $this->context;
}
// Guess the list view as the plural of the item view.
if (empty($this->view_list))
{
// @TODO Probably worth moving to an inflector class based on
// http://kuwamoto.org/2007/12/17/improved-pluralizing-in-php-actionscript-and-ror/
// Simple pluralisation based on public domain snippet by Paul Osman
// For more complex types, just manually set the variable in your class.
$plural = array(
array('/(x|ch|ss|sh)$/i', "$1es"),
array('/([^aeiouy]|qu)y$/i', "$1ies"),
array('/([^aeiouy]|qu)ies$/i', "$1y"),
array('/(bu)s$/i', "$1ses"),
array('/s$/i', "s"),
array('/$/', "s"));
// Check for matches using regular expressions
foreach ($plural as $pattern)
{
if (preg_match($pattern[0], $this->view_item))
{
$this->view_list = preg_replace($pattern[0], $pattern[1], $this->view_item);
break;
}
}
}
// Apply, Save & New, and Save As copy should be standard on forms.
$this->registerTask('apply', 'save');
$this->registerTask('save2new', 'save');
$this->registerTask('save2copy', 'save');
}

+ Voici le graphe d'appel pour cette fonction :


Documentation des fonctions membres

JControllerForm::add ( )

Method to add a new record.

Renvoie:
mixed True if the record can be added, a error object if not.
Depuis:
12.2

Définition à la ligne 144 du fichier form.php.

Références JRoute\_(), JText\_(), et JFactory\getApplication().

{
$context = "$this->option.edit.$this->context";
// Access check.
if (!$this->allowAdd())
{
// Set the internal error and also the redirect error.
$this->setError(JText::_('JLIB_APPLICATION_ERROR_CREATE_RECORD_NOT_PERMITTED'));
$this->setMessage($this->getError(), 'error');
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_list
. $this->getRedirectToListAppend(), false
)
);
return false;
}
// Clear the record edit information from the session.
$app->setUserState($context . '.data', null);
// Redirect to the edit screen.
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend(), false
)
);
return true;
}

+ Voici le graphe d'appel pour cette fonction :

JControllerForm::allowAdd (   $data = array())
protected

Method to check if you can add a new record.

Extended classes can override this if necessary.

Paramètres:
array$dataAn array of input data.
Renvoie:
boolean
Depuis:
12.2

Définition à la ligne 191 du fichier form.php.

Références JFactory\getUser().

{
$user = JFactory::getUser();
return ($user->authorise('core.create', $this->option) || count($user->getAuthorisedCategories($this->option, 'core.create')));
}

+ Voici le graphe d'appel pour cette fonction :

JControllerForm::allowEdit (   $data = array(),
  $key = 'id' 
)
protected

Method to check if you can add a new record.

Extended classes can override this if necessary.

Paramètres:
array$dataAn array of input data.
string$keyThe name of the key for the primary key; default is id.
Renvoie:
boolean
Depuis:
12.2

Définition à la ligne 209 du fichier form.php.

Références JFactory\getUser().

{
return JFactory::getUser()->authorise('core.edit', $this->option);
}

+ Voici le graphe d'appel pour cette fonction :

JControllerForm::allowSave (   $data,
  $key = 'id' 
)
protected

Method to check if you can save a new or existing record.

Extended classes can override this if necessary.

Paramètres:
array$dataAn array of input data.
string$keyThe name of the key for the primary key.
Renvoie:
boolean
Depuis:
12.2

Définition à la ligne 226 du fichier form.php.

{
$recordId = isset($data[$key]) ? $data[$key] : '0';
if ($recordId)
{
return $this->allowEdit($data, $key);
}
else
{
return $this->allowAdd($data);
}
}
JControllerForm::batch (   $model)

Method to run batch operations.

Paramètres:
JModelLegacy$modelThe model of the component being processed.
Renvoie:
boolean True if successful, false otherwise and internal error is set.
Depuis:
12.2

Définition à la ligne 249 du fichier form.php.

Références JText\_(), et JText\sprintf().

{
$vars = $this->input->post->get('batch', array(), 'array');
$cid = $this->input->post->get('cid', array(), 'array');
// Build an array of item contexts to check
$contexts = array();
foreach ($cid as $id)
{
// If we're coming from com_categories, we need to use extension vs. option
if (isset($this->extension))
{
$option = $this->extension;
}
else
{
}
$contexts[$id] = $option . '.' . $this->context . '.' . $id;
}
// Attempt to run the batch operation.
if ($model->batch($vars, $cid, $contexts))
{
$this->setMessage(JText::_('JLIB_APPLICATION_SUCCESS_BATCH'));
return true;
}
else
{
$this->setMessage(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_FAILED', $model->getError()), 'warning');
return false;
}
}

+ Voici le graphe d'appel pour cette fonction :

JControllerForm::cancel (   $key = null)

Method to cancel an edit.

Paramètres:
string$keyThe name of the primary key of the URL variable.
Renvoie:
boolean True if access level checks pass, false otherwise.
Depuis:
12.2

Définition à la ligne 294 du fichier form.php.

Références JRoute\_(), JText\_(), JSession\checkToken(), JFactory\getApplication(), jexit(), et JText\sprintf().

{
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
$app = JFactory::getApplication();
$model = $this->getModel();
$table = $model->getTable();
$checkin = property_exists($table, 'checked_out');
$context = "$this->option.edit.$this->context";
if (empty($key))
{
$key = $table->getKeyName();
}
$recordId = $app->input->getInt($key);
// Attempt to check-in the current record.
if ($recordId)
{
if ($checkin)
{
if ($model->checkin($recordId) === false)
{
// Check-in failed, go back to the record and display a notice.
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED', $model->getError()));
$this->setMessage($this->getError(), 'error');
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend($recordId, $key), false
)
);
return false;
}
}
}
// Clean the session data and redirect.
$this->releaseEditId($context, $recordId);
$app->setUserState($context . '.data', null);
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_list
. $this->getRedirectToListAppend(), false
)
);
return true;
}

+ Voici le graphe d'appel pour cette fonction :

JControllerForm::edit (   $key = null,
  $urlVar = null 
)

Method to edit an existing record.

Paramètres:
string$keyThe name of the primary key of the URL variable.
string$urlVarThe name of the URL variable if different from the primary key (sometimes required to avoid router collisions).
Renvoie:
boolean True if access level check and checkout passes, false otherwise.
Depuis:
12.2

Définition à la ligne 359 du fichier form.php.

Références JRoute\_(), JText\_(), JFactory\getApplication(), et JText\sprintf().

{
$model = $this->getModel();
$table = $model->getTable();
$cid = $this->input->post->get('cid', array(), 'array');
$context = "$this->option.edit.$this->context";
// Determine the name of the primary key for the data.
if (empty($key))
{
$key = $table->getKeyName();
}
// To avoid data collisions the urlVar may be different from the primary key.
if (empty($urlVar))
{
$urlVar = $key;
}
// Get the previous record id (if any) and the current record id.
$recordId = (int) (count($cid) ? $cid[0] : $this->input->getInt($urlVar));
$checkin = property_exists($table, 'checked_out');
// Access check.
if (!$this->allowEdit(array($key => $recordId), $key))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_EDIT_NOT_PERMITTED'));
$this->setMessage($this->getError(), 'error');
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_list
. $this->getRedirectToListAppend(), false
)
);
return false;
}
// Attempt to check-out the new record for editing and redirect.
if ($checkin && !$model->checkout($recordId))
{
// Check-out failed, display a notice but allow the user to see the record.
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKOUT_FAILED', $model->getError()));
$this->setMessage($this->getError(), 'error');
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend($recordId, $urlVar), false
)
);
return false;
}
else
{
// Check-out succeeded, push the new record id into the session.
$this->holdEditId($context, $recordId);
$app->setUserState($context . '.data', null);
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend($recordId, $urlVar), false
)
);
return true;
}
}

+ Voici le graphe d'appel pour cette fonction :

JControllerForm::getModel (   $name = '',
  $prefix = '',
  $config = array('ignore_request' => true) 
)

Method to get a model object, loading it if required.

Paramètres:
string$nameThe model name. Optional.
string$prefixThe class prefix. Optional.
array$configConfiguration array for model. Optional.
Renvoie:
object The model.
Depuis:
12.2

Réimplémentée à partir de JControllerLegacy.

Définition à la ligne 443 du fichier form.php.

{
if (empty($name))
{
}
return parent::getModel($name, $prefix, $config);
}
JControllerForm::getRedirectToItemAppend (   $recordId = null,
  $urlVar = 'id' 
)
protected

Gets the URL arguments to append to an item redirect.

Paramètres:
integer$recordIdThe primary key id for the item.
string$urlVarThe name of the URL variable for the id.
Renvoie:
string The arguments to append to the redirect URL.
Depuis:
12.2

Définition à la ligne 463 du fichier form.php.

{
$tmpl = $this->input->get('tmpl');
$layout = $this->input->get('layout', 'edit');
$append = '';
// Setup redirect info.
if ($tmpl)
{
$append .= '&tmpl=' . $tmpl;
}
if ($layout)
{
$append .= '&layout=' . $layout;
}
if ($recordId)
{
$append .= '&' . $urlVar . '=' . $recordId;
}
return $append;
}
JControllerForm::getRedirectToListAppend ( )
protected

Gets the URL arguments to append to a list redirect.

Renvoie:
string The arguments to append to the redirect URL.
Depuis:
12.2

Définition à la ligne 495 du fichier form.php.

Références JFactory\getApplication().

{
$tmpl = JFactory::getApplication()->input->get('tmpl');
$append = '';
// Setup redirect info.
if ($tmpl)
{
$append .= '&tmpl=' . $tmpl;
}
return $append;
}

+ Voici le graphe d'appel pour cette fonction :

JControllerForm::loadhistory ( )

Method to load a row from version history

Renvoie:
mixed True if the record can be added, a error object if not.
Depuis:
3.2

Définition à la ligne 531 du fichier form.php.

Références JRoute\_(), JText\_(), JFactory\getApplication(), JObject\getError(), JFactory\getLanguage(), JModelLegacy\getState(), JModelLegacy\getTable(), et JText\sprintf().

{
$model = $this->getModel();
$table = $model->getTable();
$historyId = $app->input->get('version_id', null, 'integer');
$context = "$this->option.edit.$this->context";
if (!$model->loadhistory($historyId, $table))
{
$this->setMessage($model->getError(), 'error');
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_list
. $this->getRedirectToListAppend(), false
)
);
return false;
}
// Determine the name of the primary key for the data.
if (empty($key))
{
$key = $table->getKeyName();
}
$recordId = $table->$key;
// To avoid data collisions the urlVar may be different from the primary key.
$urlVar = empty($this->urlVar) ? $key : $this->urlVar;
// Access check.
if (!$this->allowEdit(array($key => $recordId), $key))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_EDIT_NOT_PERMITTED'));
$this->setMessage($this->getError(), 'error');
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_list
. $this->getRedirectToListAppend(), false
)
);
$table->checkin();
return false;
}
$table->store();
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend($recordId, $urlVar), false
)
);
$this->setMessage(JText::sprintf('JLIB_APPLICATION_SUCCESS_LOAD_HISTORY', $model->getState('save_date'), $model->getState('version_note')));
// Invoke the postSave method to allow for the child class to access the model.
$this->postSaveHook($model);
return true;
}

+ Voici le graphe d'appel pour cette fonction :

JControllerForm::postSaveHook ( JModelLegacy  $model,
  $validData = array() 
)
protected

Function that allows child controller access to model data after the data has been saved.

Paramètres:
JModelLegacy$modelThe data model object.
array$validDataThe validated data.
Renvoie:
void
Depuis:
12.2

Définition à la ligne 520 du fichier form.php.

{
}
JControllerForm::save (   $key = null,
  $urlVar = null 
)

Method to save a record.

Paramètres:
string$keyThe name of the primary key of the URL variable.
string$urlVarThe name of the URL variable if different from the primary key (sometimes required to avoid router collisions).
Renvoie:
boolean True if successful, false otherwise.
Depuis:
12.2

Définition à la ligne 608 du fichier form.php.

Références JRoute\_(), JText\_(), JSession\checkToken(), JFactory\getApplication(), JObject\getError(), JObject\getErrors(), JFactory\getLanguage(), JModelLegacy\getState(), JModelLegacy\getTable(), jexit(), et JText\sprintf().

{
// Check for request forgeries.
JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
$app = JFactory::getApplication();
$lang = JFactory::getLanguage();
$model = $this->getModel();
$table = $model->getTable();
$data = $this->input->post->get('jform', array(), 'array');
$checkin = property_exists($table, 'checked_out');
$context = "$this->option.edit.$this->context";
$task = $this->getTask();
// Determine the name of the primary key for the data.
if (empty($key))
{
$key = $table->getKeyName();
}
// To avoid data collisions the urlVar may be different from the primary key.
if (empty($urlVar))
{
$urlVar = $key;
}
$recordId = $this->input->getInt($urlVar);
// Populate the row id from the session.
$data[$key] = $recordId;
// The save2copy task needs to be handled slightly differently.
if ($task == 'save2copy')
{
// Check-in the original row.
if ($checkin && $model->checkin($data[$key]) === false)
{
// Check-in failed. Go back to the item and display a notice.
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED', $model->getError()));
$this->setMessage($this->getError(), 'error');
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend($recordId, $urlVar), false
)
);
return false;
}
// Reset the ID and then treat the request as for Apply.
$data[$key] = 0;
$task = 'apply';
}
// Access check.
if (!$this->allowSave($data, $key))
{
$this->setError(JText::_('JLIB_APPLICATION_ERROR_SAVE_NOT_PERMITTED'));
$this->setMessage($this->getError(), 'error');
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_list
. $this->getRedirectToListAppend(), false
)
);
return false;
}
// Validate the posted data.
// Sometimes the form needs some posted data, such as for plugins and modules.
$form = $model->getForm($data, false);
if (!$form)
{
$app->enqueueMessage($model->getError(), 'error');
return false;
}
// Test whether the data is valid.
$validData = $model->validate($form, $data);
// Check for validation errors.
if ($validData === false)
{
// Get the validation messages.
$errors = $model->getErrors();
// Push up to three validation messages out to the user.
for ($i = 0, $n = count($errors); $i < $n && $i < 3; $i++)
{
if ($errors[$i] instanceof Exception)
{
$app->enqueueMessage($errors[$i]->getMessage(), 'warning');
}
else
{
$app->enqueueMessage($errors[$i], 'warning');
}
}
// Save the data in the session.
$app->setUserState($context . '.data', $data);
// Redirect back to the edit screen.
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend($recordId, $urlVar), false
)
);
return false;
}
if (!isset($validData['tags']))
{
$validData['tags'] = null;
}
// Attempt to save the data.
if (!$model->save($validData))
{
// Save the data in the session.
$app->setUserState($context . '.data', $validData);
// Redirect back to the edit screen.
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_SAVE_FAILED', $model->getError()));
$this->setMessage($this->getError(), 'error');
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend($recordId, $urlVar), false
)
);
return false;
}
// Save succeeded, so check-in the record.
if ($checkin && $model->checkin($validData[$key]) === false)
{
// Save the data in the session.
$app->setUserState($context . '.data', $validData);
// Check-in failed, so go back to the record and display a notice.
$this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKIN_FAILED', $model->getError()));
$this->setMessage($this->getError(), 'error');
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend($recordId, $urlVar), false
)
);
return false;
}
$this->setMessage(
($lang->hasKey($this->text_prefix . ($recordId == 0 && $app->isSite() ? '_SUBMIT' : '') . '_SAVE_SUCCESS')
? $this->text_prefix
: 'JLIB_APPLICATION') . ($recordId == 0 && $app->isSite() ? '_SUBMIT' : '') . '_SAVE_SUCCESS'
)
);
// Redirect the user and adjust session state based on the chosen task.
switch ($task)
{
case 'apply':
// Set the record data in the session.
$recordId = $model->getState($this->context . '.id');
$this->holdEditId($context, $recordId);
$app->setUserState($context . '.data', null);
$model->checkout($recordId);
// Redirect back to the edit screen.
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend($recordId, $urlVar), false
)
);
break;
case 'save2new':
// Clear the record id and data from the session.
$this->releaseEditId($context, $recordId);
$app->setUserState($context . '.data', null);
// Redirect back to the edit screen.
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_item
. $this->getRedirectToItemAppend(null, $urlVar), false
)
);
break;
default:
// Clear the record id and data from the session.
$this->releaseEditId($context, $recordId);
$app->setUserState($context . '.data', null);
// Redirect to the list screen.
$this->setRedirect(
'index.php?option=' . $this->option . '&view=' . $this->view_list
. $this->getRedirectToListAppend(), false
)
);
break;
}
// Invoke the postSave method to allow for the child class to access the model.
$this->postSaveHook($model, $validData);
return true;
}

+ Voici le graphe d'appel pour cette fonction :


Documentation des données membres

JControllerForm::$context
protected

Définition à la ligne 28 du fichier form.php.

JControllerForm::$option
protected

Définition à la ligne 36 du fichier form.php.

JControllerForm::$text_prefix
protected

Définition à la ligne 60 du fichier form.php.

JControllerForm::$view_item
protected

Définition à la ligne 44 du fichier form.php.

JControllerForm::$view_list
protected

Définition à la ligne 52 du fichier form.php.


La documentation de cette classe a été générée à partir du fichier suivant :