我们通过覆盖在page_list块的编辑屏幕中添加了两个布局下拉字段:
<field name="gridSize" type="C" size="255">
</field>
<field name="gridPaddingStyle" type="C" size="255">
</field>
我们已将slect字段添加到块编辑屏幕,如下所示:
<div class="ccm-block-field-group">
<h2><? echo t('Grid layout')?></h2>
<p><? echo t('Grid size')?></p>
<?php
$gridSize = array(
'1up' => 'grid-list-item-single grid-unit-1',
'2up' => 'grid-unit-2',
'3up' => 'grid-unit-3',
'4up' => 'grid-unit-4',
'5up' => 'grid-unit-5',
'6up' => 'grid-unit-6'
);
if (is_array($gridSize)) :
?>
<select name="gridSize" id="selectGridSize">
<? foreach ($gridSize as $gridItem => $value) : ?>
<option value="<?= $value ?>" <?php if ($gridSize == $value) { ?> selected <?php } ?>>
<?= $gridItem ?>
</option>
<? endforeach; ?>
</select>
<? endif; ?>
<p><? echo t('Grid padding style')?></p>
<?php
$gridPaddingStyle = array(
'Padding' => '',
'No padding' => 'grid-no-padding',
'Hairline' => 'grid-hairline'
);
if (is_array($gridPaddingStyle)) :
?>
<select name="gridPaddingStyle" id="selectPaddingSize">
<? foreach ($gridPaddingStyle as $gridPaddingStyleItem => $value) : ?>
<option value="<?= $value ?>" <?php if ($gridPaddingStyle == $value) { ?> selected <?php } ?>>
<?= $gridPaddingStyleItem ?>
</option>
<? endforeach; ?>
</select>
<? endif; ?>
</div>
$gridSize = $controller->gridSize;
$gridPadding = $controller->gridPaddingStyle;
当我们输出标记时,显然会将数据从数据库中提取出来。
除非我们重新编辑块,否则一切都很有效 - 实际上以前为我们的自定义字段设置的值不会被读取,下拉列表会恢复到选择列表中的第一项。
我们如何让page_list编辑屏幕读取先前在数据库中设置的值?
任何指向正确方向的人都会非常感激(抱歉,无法理解如何让语法高亮显示工作 - 希望降价与广告Github相同)。
干杯
本
答案 0 :(得分:2)
你的问题在于,在尝试访问它们之前,你正在编辑视图$gridSize = array(...)
中覆盖变量,你可以通过将这些数组变量名称更改为“grid_size_options”之类的语义来修复它。 ”
如果这不起作用,您可以使用$this->set
从控制器edit
方法将变量传递给视图。您的编辑方法如下所示:
public function edit()
{
$this->set('grid_size', $this->gridSize);
$this->set('grid_padding_style', $this->gridPaddingStyle);
}
然后您的修改视图就可以神奇地访问$grid_size
和$grid_padding_style
。
<select name="gridPaddingStyle" id="selectPaddingSize">
<?php
foreach ($gridPaddingStyle as $gridPaddingStyleItem => $value) {
?>
<option value="<?= $value ?>" <?= $grid_padding_style == $value ? 'selected' : '' ?> >
<?= $gridPaddingStyleItem ?>
</option>
<?php
}
?>
</select>