复选框样式并使其检查

时间:2017-02-23 04:32:38

标签: javascript php prestashop

  1. 从数据库中检索的复选框太长了以至于它是向下的,有没有办法让它成为四层
  2. 点击“所有字段”复选框后,必须选中所有复选框。
  3. 如何做到这一点?
    我的代码: -

    aBoolVal.Equals(true)

1 个答案:

答案 0 :(得分:0)

使用/adminXXX/themes/default/template/helpers/form/form.tpl模板文件呈现管理表单。

在课程/classes/helper/Helper.php中有一个方法createTemplate()

public function createTemplate($tpl_name)
{
    if ($this->override_folder) {
        if ($this->context->controller instanceof ModuleAdminController) {
            $override_tpl_path = $this->context->controller->getTemplatePath().$this->override_folder.$this->base_folder.$tpl_name;
        } elseif ($this->module) {
            $override_tpl_path = _PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/_configure/'.$this->override_folder.$this->base_folder.$tpl_name;
        } else {
            if (file_exists($this->context->smarty->getTemplateDir(1).$this->override_folder.$this->base_folder.$tpl_name)) {
                $override_tpl_path = $this->context->smarty->getTemplateDir(1).$this->override_folder.$this->base_folder.$tpl_name;
            } elseif (file_exists($this->context->smarty->getTemplateDir(0).'controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name)) {
                $override_tpl_path = $this->context->smarty->getTemplateDir(0).'controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name;
            }
        }
    } elseif ($this->module) {
        $override_tpl_path = _PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/_configure/'.$this->base_folder.$tpl_name;
    }

    if (isset($override_tpl_path) && file_exists($override_tpl_path)) {
        return $this->context->smarty->createTemplate($override_tpl_path, $this->context->smarty);
    } else {
        return $this->context->smarty->createTemplate($this->base_folder.$tpl_name, $this->context->smarty);
    }
}

正如您在此方法中所看到的,您可以通过创建此文件/modules/my_module/views/templates/admin/_configure/helpers/form/form.tpl来覆盖模块中的默认管理模板:

{extends file="helpers/form/form.tpl"}
{block name="input"}
    {if $input.type == 'checkbox'}
        {if isset($input.expand)}
            <a class="btn btn-default show_checkbox{if strtolower($input.expand.default) == 'hide'} hidden{/if}" href="#">
                <i class="icon-{$input.expand.show.icon}"></i>
                {$input.expand.show.text}
                {if isset($input.expand.print_total) && $input.expand.print_total > 0}
                    <span class="badge">{$input.expand.print_total}</span>
                {/if}
            </a>
            <a class="btn btn-default hide_checkbox{if strtolower($input.expand.default) == 'show'} hidden{/if}" href="#">
                <i class="icon-{$input.expand.hide.icon}"></i>
                {$input.expand.hide.text}
                {if isset($input.expand.print_total) && $input.expand.print_total > 0}
                    <span class="badge">{$input.expand.print_total}</span>
                {/if}
            </a>
        {/if}

        {* HERE WE DEFINE A CHECKBOX CHECK_ALL *}
        <input type="checkbox" id="check_all" name="check_all" data-name="{$input.name}" value="1" />

        {foreach $input.values.query as $value}
            {assign var=id_checkbox value=$input.name|cat:'_'|cat:$value[$input.values.id]}

            {* HERE YOU CAN REARRANGE THE CHECKBOXES AS YOU WANT *}
            <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}
    {else}
        {$smarty.block.parent}
    {/if}
{/block}

{* HERE WE DEFINE THE JAVASCRIPT THAT WILL ANIMATE THE CHECK ALL CHECKBOX *}
<script type="text/javascript">
    $("#check_all").on('change', function() {
        $("input[name=" + $(this).data('name') + "]").prop('checked', true);
        $(this).prop('checked', false);
    });
</script>

此模板将用于模块中定义的每个管理员控制器。

我没有测试这段代码,你必须根据自己的需要调整它,但整体概念就在这里。