我有一个joomla组件,我添加了一个多选列表并进行了一些组件核心编辑。我很惊讶我必须进行这样的编辑才能保存多选数据。不应该让joomla核心能够做到这一点吗?
无论如何,这就是我所做的,但我想知道你推荐什么是更好的方法。我听说过插件可能是要走的路,但我没有使用joomla插件的经验,也不确定如何使用它们。
xml是
<field
name="expertise"
type="list"
label="Area of Expertise"
required="true"
multiple="true"
/>
在模型中,我将其添加到LoadFormData
if ( ! is_array($data->expertise))
{
$data->expertise= explode(',', $data->expertise);
}
在控制器中我添加了这个
protected function postSaveHook(JModelLegacy &$model, $validData = array())
{
if(isset($validData['expertise'])){
if (is_array($validData['expertise'])) $data['expertise'] = implode(',', $validData['expertise']);
}
$model->save($data);
}
关于更好/更合适的方法的想法?
谢谢!
答案 0 :(得分:0)
对我来说没问题。
我只是好奇你为什么不在这样的结构中进行数据检查:
if(isset($validData['expertise']) && is_array($validData['expertise']))
{
$data['expertise'] = implode(',', $validData['expertise']);
}
这更容易阅读IMO。
我认为你的方法与http://www.component-creator.com的方法非常相似。您可以尝试使用多个选择字段构建组件,并查看它生成的代码如何比较。