Как я могу динамически установить каталог для медиа-поля в admin

У меня есть 2 каталога на моем корне:

/images/ <-- with user's images
/media/  <-- with system ( and components ) images

Глобальный параметр для корня изображения установлен в media, но я хочу решить через поле, где можно найти мое изображение.

XML для формы администратора

<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" />

Я дублировал исходное поле в NewMedia, чтобы избежать путаницы и установить его с помощью:

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 ;
}

Кто-нибудь может мне помочь?

1 голос | спросил Paolo Ferlini 12 Maypm15 2015, 16:17:20

1 ответ


1

В вашей модели вы должны переопределить метод getForm для динамического определения значений. Убедитесь, что вы расширяете свою модель с помощью JModelForm или JModelAdmin. После этого попробуйте выполнить следующий код:

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;
}
ответил Sahil Purav 12 Maypm15 2015, 17:05:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132