J'ai 2 répertoires sur ma racine:
/images/ <-- with user's images
/media/ <-- with system ( and components ) images
Le paramètre global pour la racine de l’image est défini sur media
, mais je veux décider via le champ où trouver mon image.
Le XML pour le formulaire admin est
<field
id="contest_image"
name="contest_image"
type="NewMedia"
required="false"
imgroot="images"
directory=""
label="Contest_image"
description="contest_image_Desc"
preview="true"
exclude=""
stripext="0" />
Pour éviter toute confusion, j'ai dupliqué le champ d'origine dans NewMedia afin de définir celui-ci avec:
if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value))
{
$folder = $this->imgroot . '/'.$this->directory;
}
elseif (file_exists(JPATH_ROOT . '/' . $this->imgroot . '/' . $this->directory))
{
$folder = $this->imgroot . '/'.$this->directory;
}
else
{
//$folder = '';
$folder = $this->imgroot ;
}
Quelqu'un peut-il m'aider ?
Dans votre modèle, vous devez remplacer la méthode getForm
pour définir les valeurs de manière dynamique. Assurez-vous d'étendre votre modèle avec JModelForm ou JModelAdmin. Une fois cela fait, essayez le code suivant:
public function getForm($data = array(), $loadData = true)
{
$form = $this->loadForm('com_yourcomponent.yourformname', 'yourformname', array('control' => 'jform', 'load_data' => $loadData));
if (empty($form))
{
return false;
}
if (condition)
{
$form->setFieldAttribute('contest_image', 'directory', 'Your Value if condition is true');
}
else
{
$form->setFieldAttribute('contest_image', 'directory', 'Your Value is false');
}
return $form;
}