Joomla创建选择选项列表,该列表将数据保存到数据库(来自用户配置文件)

时间:2018-07-28 14:27:50

标签: database select joomla option

我想创建一个小项目。在joomla用户页面中,用户可以选择标题/封面背景。他们无法上传图片,他们只能选择我已经上传到服务器文件夹中的背景图片。

所以我需要后端提供类似的东西:

<form action="index.php" method="post" enctype="multipart/form-data">
 <select>
  <option value="1">Background image 1</option>
  <option value="2">Background image 2</option>
  <option value="3">Background image 3</option>
  <option value="4">Background image 4</option>
 </select>
 <button type="submit">Change header</button>
</form>

然后根据值显示背景:

<?php 
if ($user_profile->headerbackground==1) {
    echo '<img src="link" />';
}else if ($user_profile->headerbackground==2) {
    echo '<img src="link" />';
}else if ($user_profile->headerbackground==3){
    echo '<img src="link" />';
}
?>

在数据库中,我可以在右侧的Joomla用户个人资料表中创建一个名为“ headerbackground”的新列。在此列中,数据库将仅根据所选选项保存1,2,3,4 ...之类的值。

希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

在您的模板替代中尝试此操作。除了循环之外,我仅获取一个特定的字段,因此您可能必须根据值调整[1]。

模板替代文件顶部:

JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); //load fields helper

然后再

$customFieldnames = FieldsHelper::getFields('com_users.user',JFactory::getUser(), true); // get custom field names by user id
$customFieldIds = array_map(create_function('$o', 'return $o->id;'), $customFieldnames); //get custom field Ids by custom field names
$model = JModelLegacy::getInstance('Field', 'FieldsModel', array('ignore_request' => true)); //load fields model
$customFieldValues = $model->getFieldValues($customFieldIds , $item['id']); //Fetch values for custom field Ids

$background_image = $customFieldValues[1];

if($background_image == 1) {
    echo '<img src="images/Fornite.jpg" />';
} elseif($background_image == 2) {
    echo '<img src="images/Blue.jpg" />';
} elseif($background_image == 3) {
    echo '<img src="images/Black.jpg" />';
} else {
    echo '<img src="images/whatever.jpg" />';
}

我更新了,因为您只是存储数字值而不是图像路径。如果这不起作用,则需要回显$ background_image以查看其要提取的值。

查看您的截屏视频,我不确定您正在使用$ background_image-> default_value做什么,这可能是问题所在。