我创建了块wchich,您可以动态添加一个多个名称。当我Cick保存并返回块编辑时,我看不到我的新添加名称。我认为保存到数据库是问题。请有人可以帮我吗?
这是我的代码:
Controller.php:
<?php defined('C5_EXECUTE') or die("Access Denied.");
Loader::block('library_file');
class MultipleBlockController extends BlockController {
protected $btName = 'Multiply TEST';
protected $btDescription = 'Multiple add. TEST';
protected $btTable = 'btDCMultiple';
protected $btInterfaceWidth = "700";
protected $btInterfaceHeight = "450";
}
db.xml:
<?xml version="1.0"?>
<schema version="0.3">
<table name="btDCMultiple">
<field name="bID" type="I">
<key />
<unsigned />
</field>
<field name="inputs" type="C" size="16"></field>
</table>
</schema>
edit.php:
<?php defined('C5_EXECUTE') or die("Access Denied.");
?>
<?php
$remove_row_icon = '<img src="'.ASSETS_URL_IMAGES.'/icons/remove_minus.png" class="remove_row" height="14" width="14" >';
$add_row_icon = '<img src="'.ASSETS_URL_IMAGES.'/icons/add_small.png" class="add_row" height="14" width="14" >';
?>
<!-- Zakladki -->
<ul id="ccm-autonav-tabs" class="ccm-dialog-tabs">
<li class="ccm-nav-active"><a id="ccm-autonav-tab-add" href="javascript:void(0);"><?php echo t('Edit')?></a></li>
</ul>
<!-- Odstep konfiguracja -->
<div style="padding: 10px">
<div class="ccm-autonavPane" id="ccm-autonavPane-add">
<h2>debug</h2>
<table>
<tr><td><?php echo 'Name';?></td><td></td></tr>
<?php
foreach($inputs as $a_name) { ?>
<tr>
<td><input type="text" size="10" name="inputs" value="<?php echo $a_name ?>" ></td>
<td><?php echo $add_row_icon; echo (' '); echo $remove_row_icon;?></td>
</tr>
<?php } ?>
</table>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('.add_row').live('click',function(){
var copy_of_row = $(this).closest('tr').clone();
$(copy_of_row).find('input').val('');
$(this).closest('tr').after(copy_of_row);
});
$('.remove_row').live('click',function(){
$(this).closest('tr').remove();
});
});
</script>
view.php:
<?php defined('C5_EXECUTE') or die("Access Denied.");
?>
<div>
<?php echo $inputs ?>
</div>
另一个问题:如何从DB加载数组?
您的代码中有几个问题:
-
如果您的字段输入要重复,您需要添加括号[]的名称,因此变为
name="inpust[]"
-
在您的数据库表中,字段出价包含块ID,这是一个键 字段意味着您的数据库中只有一排可以具有该值。在你的 情况,如果您有3个输入,则将有3行带有相同的出价 这是不可能的。
我建议您查看核心幻灯片块,以使用2个单独的表来保存一个块的多个值。
加载数据库助手后,您可以执行其他问题
$rows = $db->getArray($sql,$vals);
$行将包含您的值数组,$ sql是您的sql呼叫(从whyit_table ...)和$ vals(可选)包含用于SQL中使用的过滤值。