Cakephp 1.3 如何不需要必要的输入

Cakephp 1.3 如何不需要必要的输入,cakephp-1.3,Cakephp 1.3,我有一个与用户关联的建筑。用户还可以注册、登录等。我设置了验证码,因此需要密钥用户字段(例如电子邮件,名称等) 当我创建一个建筑时,我还提供了在现场关联用户的功能。“我的建筑表单”包含该关键用户信息的输入: <?php echo $this->Form->input( 'User.first_name' ) ?> <?php echo $this->Form->input( 'User.last_name' ) ?> <?php echo $

我有一个与
用户关联的
建筑
用户
还可以注册、登录等。我设置了验证码,因此需要密钥
用户
字段(例如
电子邮件
名称
等)

当我创建一个建筑时,我还提供了在现场关联用户的功能。“我的建筑表单”包含该关键用户信息的输入:

<?php echo $this->Form->input( 'User.first_name' ) ?>
<?php echo $this->Form->input( 'User.last_name' ) ?>
<?php echo $this->Form->input( 'User.email' ) ?>

但是,我不希望这些输入显示为所需b/c我希望用户能够创建
建筑,而不必创建
用户记录。我找不到一种方法来做的是从验证规则放在那里的div中删除所需的类

我已经尝试了
'required'=>false
和设置
值的各种组合,但到目前为止没有任何效果。有没有一个好方法可以不需要表单输入

谢谢。

这应该可以做到:

echo $this->Form->input('User.first_name',
                        array('div' => array('class' => 'input text')));
或者,您可以仅为该视图在控制器中
取消设置
所需的
规则,但要注意结果:

unset($this->User->validate['first_name']['ruleName']['required']);

我很惊讶deceze的解决方案对我不起作用(也许我只是做错了什么),但我最终不得不使用Javascript“手动”从每个字段的包含div中删除所需的类。

我也遇到了同样的问题,这对我起到了作用(在Cake 1.2中进行了测试,但我确信它会转化为1.3)

  • 将“norequire”类添加到标签:

    echo $this->Form->input( 'User.first_name', array('label'=>array('class'=>'norequire','text'=>'First Name') ));
    
  • 在CSS中,设置norequire类:

    form .required label.norequire { font-weight:normal;  }
    form .required label.norequire:after { content:'';  }
    

  • (form.required部分对于为所需类覆盖cakes的默认css非常重要。)

    我最后手动添加了分区。不是很优雅,但很管用:

    <?php if ($this->Form->isFieldError('first_name')) { ?>
        <div class="input text error">
    <?php } else { ?>
        <div class="input text">
    <?php }
        echo $this->Form->input('first_name', array('div' => false)); ?>
    </div>
    
    
    

    这对我来说很有用

    我仍然没有找到一个“正确”的答案,但是作为一个快速的黑客,你可以尝试不使用表单帮助器,自己把代码扔进去

    <?php
    //echo $this->Form->input( 'User.first_name' )
    //echo $this->Form->input( 'User.last_name' )
    //echo $this->Form->input( 'User.email' )
    echo "<div class='input text'><label for='User_first_name'>First Name</label>
          <input name='data[User][first_name]' maxlength='50' type='text' id='User_first_name'/></div>";
    echo "<div class='input text'><label for='User_last_name'>Last Name</label>
          <input name='data[User][last_name]' maxlength='50' type='text' id='User_last_name'/></div>";
    echo "<div class='input text'><label for='User_email'>Username</label>
          <input name='data[User][email]' maxlength='50' type='text' id='User_email'/></div>";
    ?>
    

    我想这已经是很久以前的事了,但这里有一种“正确”的方法,可以使输入元素不需要(至少在Cake 2.4.1中):

    只需传递
    'required'=>false


    我真希望我能说我知道如何自动触发这种行为,但是修改我的模型似乎不会影响自动生成的
    元素。如果我弄明白了,我会更新这篇文章。

    +1作为标题。出于某种原因,它让我笑了…有趣的是,我认为第一个也可以,但它肯定不起作用。我想我可能错过了一些东西,但我想我只是用这个方法来添加所需的类;永远不要删除它。这似乎很疯狂,但即使取消设置
    required
    键也不行。我还明确地将其设置为
    false
    。一个
    debug()
    print告诉我它是unset/false,但是这个类仍然出现在div.Nice解决方案中。为此,我喜欢使用CSS覆盖表示和内容。
    <?php
    //echo $this->Form->input( 'User.first_name' )
    //echo $this->Form->input( 'User.last_name' )
    //echo $this->Form->input( 'User.email' )
    echo "<div class='input text'><label for='User_first_name'>First Name</label>
          <input name='data[User][first_name]' maxlength='50' type='text' id='User_first_name'/></div>";
    echo "<div class='input text'><label for='User_last_name'>Last Name</label>
          <input name='data[User][last_name]' maxlength='50' type='text' id='User_last_name'/></div>";
    echo "<div class='input text'><label for='User_email'>Username</label>
          <input name='data[User][email]' maxlength='50' type='text' id='User_email'/></div>";
    ?>
    
    echo $this->Form->input('studentid', array(
        'label' => __('Student ID'),
        'required' => false
    ));