Prestashop 中的复选框值
Checkbox values in prestashop
我正在使用 prestashop 并尝试使用 HelperForm 从带有复选框的表单中获取值
所以我得到的是:
$fields_form[0]['form']= [
'legend'=> [
'title'=> $this->l('Indexation')
] ,
'input'=>[
[
'type'=>'text',
'label'=> $this->l('Base(s) à indexer'),
'name'=>'options',
'size'=>20,
'required'=>true
]
],
'submit'=>[
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
]
];
然后
$helper = new HelperForm();
[...]
$helper->toolbar_btn = array(
'save' =>
array(
'desc' => $this->l('Save'),
'href' => AdminController::$currentIndex.'&configure='.$this->name.'&save'.$this->name.
'&token='.Tools::getAdminTokenLite('AdminModules'),
),
'back' => array(
'href' => AdminController::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'),
'desc' => $this->l('Back to list')
)
);
// Load current value
$helper->fields_value['options'] = Configuration::get('options');
return $helper->generateForm($fields_form);
在我的 getContent
中,我有:
$my_module_name = strval(Tools::getValue('options'));
return $my_module_name;
所以在那之前我没有遇到任何问题。我在文本输入中写 'test' 然后返回 'test' 但我不想要文本输入我想要一个复选框输入所以我改变了我的形式:
$fields_form[0]['form']= [
'legend'=> [
'title'=> $this->l('Indexation')
] ,
'input'=>[
[
'type'=>'checkbox',
'label'=> $this->l('Base(s) à indexer'),
'name'=>'options',
'required'=>true,
'values'=>[
'query'=>$options,
'id'=>'id',
'name'=>'name'
]
]
],
'submit'=>[
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
]
];
$options 是:
$options = [
[
'id'=>1,
'name'=>'test'
],
[
'id'=>2,
'name'=>'test2'
]
];
在我的 getContent()
中:return (Tools::getValue('options'));
但是这样一来,什么也没有显示。
此外,如果我这样做 return sizeof(Tools::getValue('options))
无论我用复选框勾选什么,它都会给我 1
首先你需要用[]设置字段名称
$fields_form[0]['form']= [
'legend'=> [
'title'=> $this->l('Indexation')
] ,
'input'=>[
[
'type'=>'checkbox',
'label'=> $this->l('Base(s) à indexer'),
'name'=>'options[]',
'required'=>true,
'values'=>[
'query'=>$options,
'id'=>'id',
'name'=>'name'
]
]
],
'submit'=>[
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
]
];
那么,你的选项应该有一个值:
$options = [
[
'id'=>1,
'name'=>'test',
'val' => 1
],
[
'id'=>2,
'name'=>'test2',
'val' => 2
]
];
然后您可以通过以下方式获取检查值:
Tools::getValue('options')
编辑:
在 1.6 中,我们有助手的管理员 tpl:
{foreach $input.values.query as $value}
{assign var=id_checkbox value=$input.name|cat:'_'|cat:$value[$input.values.id]}
<div class="checkbox{if isset($input.expand) && strtolower($input.expand.default) == 'show'} hidden{/if}">
{strip}
<label for="{$id_checkbox}">
<input type="checkbox" name="{$id_checkbox}" id="{$id_checkbox}" class="{if isset($input.class)}{$input.class}{/if}"{if isset($value.val)} value="{$value.val|escape:'html':'UTF-8'}"{/if}{if isset($fields_value[$id_checkbox]) && $fields_value[$id_checkbox]} checked="checked"{/if} />
{$value[$input.values.name]}
</label>
{/strip}
</div>
{/foreach}
因此,要设置要返回的复选框值,我们需要传递 val:
{if isset($value.val)} value="{$value.val|escape:'html':'UTF-8'}"{/if}
此外,加载页面时是否检查我们传递的值以满足条件:
{if isset($fields_value[$id_checkbox]) && $fields_value[$id_checkbox]} checked="checked"{/if}
我正在使用 prestashop 并尝试使用 HelperForm 从带有复选框的表单中获取值
所以我得到的是:
$fields_form[0]['form']= [
'legend'=> [
'title'=> $this->l('Indexation')
] ,
'input'=>[
[
'type'=>'text',
'label'=> $this->l('Base(s) à indexer'),
'name'=>'options',
'size'=>20,
'required'=>true
]
],
'submit'=>[
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
]
];
然后
$helper = new HelperForm();
[...]
$helper->toolbar_btn = array(
'save' =>
array(
'desc' => $this->l('Save'),
'href' => AdminController::$currentIndex.'&configure='.$this->name.'&save'.$this->name.
'&token='.Tools::getAdminTokenLite('AdminModules'),
),
'back' => array(
'href' => AdminController::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminModules'),
'desc' => $this->l('Back to list')
)
);
// Load current value
$helper->fields_value['options'] = Configuration::get('options');
return $helper->generateForm($fields_form);
在我的 getContent
中,我有:
$my_module_name = strval(Tools::getValue('options'));
return $my_module_name;
所以在那之前我没有遇到任何问题。我在文本输入中写 'test' 然后返回 'test' 但我不想要文本输入我想要一个复选框输入所以我改变了我的形式:
$fields_form[0]['form']= [
'legend'=> [
'title'=> $this->l('Indexation')
] ,
'input'=>[
[
'type'=>'checkbox',
'label'=> $this->l('Base(s) à indexer'),
'name'=>'options',
'required'=>true,
'values'=>[
'query'=>$options,
'id'=>'id',
'name'=>'name'
]
]
],
'submit'=>[
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
]
];
$options 是:
$options = [
[
'id'=>1,
'name'=>'test'
],
[
'id'=>2,
'name'=>'test2'
]
];
在我的 getContent()
中:return (Tools::getValue('options'));
但是这样一来,什么也没有显示。
此外,如果我这样做 return sizeof(Tools::getValue('options))
无论我用复选框勾选什么,它都会给我 1
首先你需要用[]设置字段名称
$fields_form[0]['form']= [
'legend'=> [
'title'=> $this->l('Indexation')
] ,
'input'=>[
[
'type'=>'checkbox',
'label'=> $this->l('Base(s) à indexer'),
'name'=>'options[]',
'required'=>true,
'values'=>[
'query'=>$options,
'id'=>'id',
'name'=>'name'
]
]
],
'submit'=>[
'title' => $this->l('Save'),
'class' => 'btn btn-default pull-right'
]
];
那么,你的选项应该有一个值:
$options = [
[
'id'=>1,
'name'=>'test',
'val' => 1
],
[
'id'=>2,
'name'=>'test2',
'val' => 2
]
];
然后您可以通过以下方式获取检查值:
Tools::getValue('options')
编辑: 在 1.6 中,我们有助手的管理员 tpl:
{foreach $input.values.query as $value}
{assign var=id_checkbox value=$input.name|cat:'_'|cat:$value[$input.values.id]}
<div class="checkbox{if isset($input.expand) && strtolower($input.expand.default) == 'show'} hidden{/if}">
{strip}
<label for="{$id_checkbox}">
<input type="checkbox" name="{$id_checkbox}" id="{$id_checkbox}" class="{if isset($input.class)}{$input.class}{/if}"{if isset($value.val)} value="{$value.val|escape:'html':'UTF-8'}"{/if}{if isset($fields_value[$id_checkbox]) && $fields_value[$id_checkbox]} checked="checked"{/if} />
{$value[$input.values.name]}
</label>
{/strip}
</div>
{/foreach}
因此,要设置要返回的复选框值,我们需要传递 val:
{if isset($value.val)} value="{$value.val|escape:'html':'UTF-8'}"{/if}
此外,加载页面时是否检查我们传递的值以满足条件:
{if isset($fields_value[$id_checkbox]) && $fields_value[$id_checkbox]} checked="checked"{/if}