【问题标题】:Joomla create select option list which saves data into database (from user profile)Joomla 创建选择选项列表,将数据保存到数据库中(来自用户配置文件)
【发布时间】:2019-01-05 10:09:35
【问题描述】:

我想创建一个小项目。在 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... 之类的值。

希望有人可以帮助我。

【问题讨论】:

  • 请查看用户自定义字段。如果你决定走那条路,我可以查找一些资源来提取模板覆盖中的值
  • 我之前在 Joomla 中做过这个自定义字段。我只是无法获得像 $custom_fields->background_image 这样的正确调用。我被困在这上面了。

标签: database select joomla option


【解决方案1】:

在您的模板覆盖中试试这个。我只是抓取一个特定字段,而不是循环,因此您可能需要根据值调整 [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 做什么,这可能是问题所在。

【讨论】:

  • 感谢您的帮助。我试过了,但没有成功。所以,我所做的是在用户 Joomla 中创建一个新的自定义字段:screencast.com/t/vSLAj3o8 然后在后端覆盖文件中我已经这样做了:screencast.com/t/EatPrjawRzsg 我知道这不是正确的方法,而是使用你的调用方法我不明白它将如何与正确的列链接以获得正确的“键”或值:screencast.com/t/YaCxcD1IsI4W
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 1970-01-01
  • 2015-05-30
相关资源
最近更新 更多