我们可以使用SafeCracker使用2个或更多“ textarea”字段吗?

问题描述

| 我们可以使用SafeCracker使用2个或更多“ textarea”字段吗?
{exp:safecracker channel=\"letters_to_editor\" return=\"site/thank_you\" entry_id=\"{segment_3}\" status=\"Closed\"}
        <p><label for=\"Subject\">Subject:</label><br />
           &lt;input type=\"text\" name=\"title\" id=\"title\" value=\"{title}\" size=\"50\" maxlength=\"100\"&gt;

                 {custom_fields}
                    {if textinput}

                        <p><label for=\"Name\">Your Name:</label><br />
                           &lt;input type=\"text\" name=\"{field_name}\" value=\"{field_data}\" id=\"{field_name}\" size=\"50\" /&gt;&lt;/p>
                    {/if}

                    {if textarea}
                        <p><label for=\"letter-content\">Your Question:</label><br />
                           &lt;textarea id=\"{field_name}\" name=\"{field_name}\" rows=\"10\" cols=\"50\"&gt;{field_data}&lt;/textarea&gt;&lt;/p>
                    {/if}
                 {/custom_fields}
        <p>&lt;input type=\"submit\" value=\"Submit\"&gt;&lt;/p>
{/exp:safecracker}
我想要的是供访客输入的内容: 学科 他们的名字 他们的问题 我希望所有这些字段都在后端填充,因此后端有以下字段: 主题= {title} 名称= {questioners_name} ==>文字输入 问题= {question_bodytext} ==>文本区域 我在后端需要另一个文本区域 答案= {answer_bodytext} ==>文字区域 但是,当我创建任意两个字段时,它们[字段]在站点的表单显示中出现两次。 在SafeCracker仅询问主题,名称和问题的地方,它也为答案添加了另一个文本区域,即使我没有在表格中添加它。它两次显示文本区域。 如何解决这个问题?     

解决方法

        当您使用“ 1”标记对时,SafeCracker将始终循环遍历所有自定义字段。在这种情况下,您要做的就是使用字段名称对各个字段进行编码。
{exp:safecracker channel=\"letters_to_editor\" return=\"site/thank_you\" entry_id=\"{segment_3}\" status=\"Closed\"}
    <p>
        <label for=\"title\">Subject:</label><br />
        <input type=\"text\" name=\"title\" id=\"title\" value=\"{title}\" size=\"50\" maxlength=\"100\" />
    </p>

    <p>
        <label for=\"questioners_name\">Your Name:</label><br />
        <input type=\"text\" name=\"questioners_name\" value=\"{questioners_name}\" id=\"questioners_name\" size=\"50\" />
    </p>

    <p>
        <label for=\"question_bodytext\">Your Question:</label><br />
        <textarea id=\"question_bodytext\" name=\"question_bodytext\" rows=\"10\" cols=\"50\">{question_bodytext}</textarea>
    </p>

    <p><input type=\"submit\" value=\"Submit\" /></p>
{/exp:safecracker}
    ,        D-Rock是正确的,当您使用
{custom_fields}
标签对时,SafeCracker将循环浏览并显示指定通道的所有自定义字段。 根据您使用SafeCracker的方式,它可能具有积极的并可能节省大量时间的功能。 例如,如果您要创建带有数十个自定义字段的注册或事件表单,那么让它们全部自动输出完全是一件乐事。但是,如果您的需求更简单,那么输出一些不需要的自定义字段可能会令人沮丧。 解决此问题的一种惰性方法是允许动态输出所有自定义字段,但可以使用CSS有选择地隐藏不需要的字段。 考虑以下SafeCracker代码:
{exp:safecracker channel=\"letters_to_editor\" return=\"site/thank_you\"}
    <p class=\"title\">
        <label for=\"Subject\">Subject</label><br />
        <input type=\"text\" name=\"title\" id=\"title\" />
    </p>

    {custom_fields}
        {if textinput}
            <p class=\"{field_name}\">
                <label for=\"{field_name}\">{field_label}</label><br />
                <input type=\"text\" id=\"{field_name}\" name=\"{field_name}\" />
            </p>
        {/if}

        {if textarea}
            <p class=\"{field_name}\">
                <label for=\"{field_name}\">{field_label}</label><br />
                <textarea id=\"{field_name}\" name=\"{field_name}\"></textarea>
            </p>
        {/if}
    {/custom_fields}

    <p><input type=\"submit\" value=\"Submit\"></p>
{/exp:safecracker}
它将输出以下HTML(为澄清起见,已简化):
<form method=\"post\" action=\"#\">
    <p class=\"title\">
        <label for=\"Subject\">Subject</label><br />
        <input type=\"text\" name=\"title\" id=\"title\" />
    </p>

    <!-- Start of Dynamic Custom Fields -->

    <p class=\"questioners_name\">
        <label for=\"questioners_name\">Name</label><br />
        <input name=\"questioners_name\" id=\"questioners_name\" type=\"text\" />
    </p>

    <p class=\"question_bodytext\">
        <label for=\"question_bodytext\">Question</label><br />
        <textarea id=\"question_bodytext\" name=\"question_bodytext\"></textarea>
    </p>

    <p class=\"answer_bodytext\">
        <label for=\"answer_bodytext\">Answer</label><br />
        <textarea id=\"answer_bodytext\" name=\"answer_bodytext\"></textarea>
    </p>

    <!-- End of Dynamic Custom Fields -->

    <input type=\"submit\" value=\"Submit\" />
</form>
使用单个CSS规则,您可以隐藏Answer Textarea,使其不显示在表单中:
<style>
    .answer_bodytext { display: none; }
</style>
这种方法的强大功能是利用ѭ7并将其用作CSS挂钩以隐藏您不想显示的字段。 可以理解,这是解决问题的一种极其懒惰的方法,并且实际上不会从页面中删除表单元素。取而代之的是,这是一种技术含量低的方法,可以选择性地隐藏特定的自定义字段,而无需手动对整个表单进行硬编码-非常适合对时间敏感的更改或懒惰的程序员!     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...