在我的 joomla 自定义组件中,我使用了 SQL 字段类型 (item.xml):
<field name="colors" type="sql" query="SELECT id ,name FROM #__products_colors" multiple="multiple" key_field="id" value_field="name" class="inputbox"
label="colors" description="COM_PRODUCTS_FORM_DESC_ITEM_COLORS" />
在我看来,我这样称呼该字段:
<?php echo $this->form->getInput('colors'); ?>
这给了我一个漂亮而流畅的选择框,如下所示:
<select id="jform_colors" class="inputbox" multiple="multiple" name="jform[colors][]" aria-invalid="false">
<option value="1">blue</option>
<option value="2">yellow</option>
<option value="3">red</option>
<option value="4">green</option>
<option value="5">purple</option>
当我保存此颜色字段时,例如在选择蓝色和红色后,它在我的数据库中保存为 1,3。 Joomla 为我做了所有的工作...(感谢 Joomla)
现在也许我变得贪心了,但我希望 Joomla 在我保存后编辑条目时为我预选这些值。它对所有其他类型的字段都这样做,那么为什么不在这里呢?有什么我忘记了吗?
谢谢你!
编辑:答案中的绑定(bind)函数,我稍微调整了一下。
public function bind($array, $ignore = '') {
if (isset($array['params']) && is_array($array['params'])) {
$registry = new JRegistry();
$registry->loadArray($array['params']);
$array['params'] = (string) $registry;
}
//print_r($array);
if (key_exists('colors', $array) && is_array($array['colors'])) {
echo "pwn";
$array['colors'] = implode(',', $array['colors']);
}
if (isset($array['metadata']) && is_array($array['metadata'])) {
$registry = new JRegistry();
$registry->loadArray($array['metadata']);
$array['metadata'] = (string) $registry;
}
return parent::bind($array, $ignore);
}
并且不要使用 filter="safehtml":)
祝大家好运!
最佳答案
如果您遵循 Joomla 的标准,您的模型中应该有一个名为“loadFormData”的方法。在那里您可以确定从数据库中获取时该字段已转换为数组,例如:
<?php
protected function loadFormData()
{
// Check the session for previously entered form data.
$data = JFactory::getApplication()->getUserState('com_yourcomponent.edit.item.data', array());
if (empty($data)) {
$data = $this->getItem();
}
// THIS IS WHAT YOU MUST BE MISSING
if (is_array($data) && !is_array($data['colors'])){
$data['colors'] = explode(',',$data['colors']);
} elseif (is_object($data) && !is_array($data->colors)) {
$data->colors = explode(',',$data->colors);
}
return $data;
}
?>
您还需要覆盖表类中的绑定(bind)方法:
<?php
public function bind($src, $ignore = array())
{
if (parent::bind($src, $ignore) && is_array($this->colors)){
$this->colors = implode(',', $this->colors);
}
}
关于xml - 编辑时未预选 Joomla 1.7 多 SQL 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8743321/
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
是否有类似“RVMuse1”或“RVMuselist[0]”之类的内容而不是键入整个版本号。在任何时候,我们都会看到一个可能包含5个或更多ruby的列表,我们可以轻松地键入一个数字而不是X.X.X。这也有助于rvmgemset。 最佳答案 这在RVM2.0中是可能的=>https://docs.google.com/document/d/1xW9GeEpLOWPcddDg_hOPvK4oeLxJmU3Q5FiCNT7nTAc/edit?usp=sharing-知道链接的任何人都可以发表评论
目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类
我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时
我正在使用Rails3.2.3和Ruby1.9.3p0。我发现我经常需要确定某个字符串是否出现在选项列表中。看来我可以使用Ruby数组.includemethod:或正则表达式equals-tildematchshorthand用竖线分隔选项:就性能而言,一个比另一个好吗?还有更好的方法吗? 最佳答案 总结:Array#include?包含String元素,在接受和拒绝输入时均胜出,对于您的示例只有三个可接受的值。对于要检查的更大的集合,看起来Set#include?和String元素可能会获胜。如何测试我们应该根据经验对此进行测试
我找到了这样的东西:Rails:Howtolistdatabasetables/objectsusingtheRailsconsole?这一行没问题:ActiveRecord::Base.connection.tables并返回所有表但是ActiveRecord::Base.connection.table_structure("users")产生错误:ActiveRecord::Base.connection.table_structure("projects")我认为table_structure不是Postgres方法。如何列出Postgres数据库的Rails控制台中表中的所有
我将gem推送到rubygems.org,当我执行“geminstall(gem)”时出现此错误:ERROR:Whileexecutinggem...(NameError)uninitializedconstantPsych::Syck我可以执行“gembuild(gem).gemspec”来生成本地gem,然后geminstall(gem).gem并且安装正常。我还可以将gem放入我的Rails应用程序的Gemfile中,并带有指向Github存储库的指针,这也可以。我试过在多台计算机上安装gem(来自rubygems.org,它们都遇到相同的错误。我不知道是什么原因导致从r
这是我发现自己偶尔想做的事情。假设我有一个参数列表。在Lisp中,我可以像这样`(imaginary-function,@args)为了调用将数组从一个元素转换为正确数量的参数的函数。Ruby中是否有类似的功能?或者我只是在这里使用了一个完全错误的成语? 最佳答案 是的!它被称为splat运算符。a=[1,44]p(*a) 关于Ruby:如何将数组拼接成Lisp风格的列表?,我们在StackOverflow上找到一个类似的问题: https://stackov
@locations=Location.all#currentlistingall@locations=Location.slice(5)orLocation.split(5)使用Ruby,我试图将我的列表分成4列,每列限制为5个;然而,切片或拆分似乎都不起作用。知道我可能做错了什么吗?任何帮助是极大的赞赏。 最佳答案 您可能想使用in_groups_of:http://railscasts.com/episodes/28-in-groups-of这是RyanBates在railscast中的示例用法: