【问题标题】:Hiding a form field with ExpressionEngine safecracker使用 ExpressionEngine 安全破解器隐藏表单字段
【发布时间】:2012-09-17 10:10:09
【问题描述】:

我在我的网站的前端创建了一个表单,允许注册成员发布帖子而无需访问 Admin CP,但是我想从输出中隐藏一个特定的表单元素。

我们要隐藏的元素是一个复选框,它允许显示只有管理员才能看到的项目。这可以使用自动表单输出吗?我使用了以下安全破解器代码:

{global_errors}{error}{/global_errors}

<label for="title">Title</label>
<input type="text" name="title" id="title" value="{title}" size="50" maxlength="100"         onkeyup="liveUrlTitle();">

{status_menu}
  <label for="status">Status</label>
  <select name="status" id="status">
    {select_options}
  </select>
{/status_menu}

{custom_fields}

  <p><label for="{field_name}">{if required}* {/if}{field_label}</label>
  {field_instructions}
  {formatting_buttons}

  {if error}
    <span class="error">{error}</span>
  {/if}
  {if textarea}
    <textarea id="{field_name}" name="{field_name}" dir="{text_direction}" rows="{rows}">{field_data}</textarea>
  {/if}
  {if text}
    <input type="text" dir="{text_direction}" id="{field_name}" name="{field_name}" value="{field_data}" maxlength="{maxlength}" size="50">
  {/if}
  {if select}
    <select id="{field_name}" name="{field_name}">
      {options}<option value="{option_value}"{selected}>{option_name}</option>{/options}
    </select>
  {/if}
  {if date}
    <input type="text" id="{field_name}" name="{field_name}" value="{field_data}" size="50">
  {/if}
  {if checkbox}
    {options}
      <label class="checkbox">{option_value}
        <input type="checkbox" id="{field_name}" name="{field_name}[]" value="{option_value}"{checked}>
      </label>
    {/options}
  {/if}
  {if radio}
    {options}
      <label class="checkbox">{option_value}
        <input type="radio" id="{field_name}" name="{field_name}" value="{option_value}"    {checked}>
      </label>
    {/options}
  {/if}
  {if safecracker_file}
    {display_field}
  {/if}
  {if relationship}
    <select id="{field_name}" name="{field_name}">
      {options}
        <option value="{option_value}"{selected}>{option_name}</option>
      {/options}
     </select>
  {/if}
  {if multiselect}
    <select id="{field_name}" name="{field_name}[]" multiple="multiple">
      {options}
         <option value="{option_value}"{selected}>{option_name}</option>
      {/options}
    </select>
  {/if}
  {if rte}
    <textarea id="{field_name}" class="rte" name="{field_name}" dir="{text_direction}" rows="{rows}">{field_data}</textarea>
  {/if}
</p>
{/custom_fields}
<input type="submit" name="submit" value="Submit">

【问题讨论】:

    标签: php expressionengine safecracker


    【解决方案1】:

    您可能会丢失 {custom_fields} 循环并硬编码所有字段。

    或者您可以扩展@unexplainedBacn 的计划并为field_namemember_group 添加测试——否则您将隐藏所有 个复选框。

    {if checkbox}
      {if field_name == 'field_to_hide' && logged_in_group_id == 1} 
        {options}
          <label class="checkbox">{option_value}
            <input type="checkbox" id="{field_name}" name="{field_name}[]" value="{option_value}"{checked}>
          </label>
        {/options}
      {if:elseif field_name != 'field_to_hide'}
        {options}
          <label class="checkbox">{option_value}
            <input type="checkbox" id="{field_name}" name="{field_name}[]" value="{option_value}"{checked}>
          </label>
        {/options}
      {/if}
    {/if}
    

    【讨论】:

      【解决方案2】:

      我不相信这是你可以自动完成的。

      您可以将复选框包装在条件中,检查您的管理员组(或组)的组 ID:

      {if logged_in_group_id == 1} 
        <input type="checkbox" [...] />
      {/if}
      

      如果您有两个“管理员”组,则如下所示:

      {if logged_in_group_id == 1 || logged_in_group_id == 7} 
        <input type="checkbox" [...] />
      {/if}
      

      具体值取决于用户组的 ID 号(Members > Member Groups 在 CP 中)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-07
        • 2014-04-01
        • 1970-01-01
        • 2012-03-12
        • 2012-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多