我有Building
与User
相关联。 User
也可以注册,登录等。我有我的验证集,因此需要关键的User
字段(例如email
,name
等)。
当我创建一个建筑物时,我还提供了在现场关联用户的能力。我的构建表单包含该关键用户信息的输入:
<?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我希望用户能够创建Building without necessarily creating a
User`记录。我无法找到的方法是从验证规则放在那里的div中删除所需的类。
我尝试了'required' => false
的各种组合并设置class
值,但到目前为止还没有任何效果。有没有一种不需要表单输入的好方法?
感谢。
答案 0 :(得分:5)
我想这已经很长时间了,但是这里是“正确”的方法,不需要输入元素(至少在Cake 2.4.1中):
echo $this->Form->input('studentid', array(
'label' => __('Student ID'),
'required' => false
));
只需通过'required' => false
。
我真的希望我能说我知道如何自动触发此行为,但修改我的模型似乎不会影响自动生成的<input>
元素。如果/我想出来的话,我会更新这篇文章。
答案 1 :(得分:1)
我遇到了同样的问题,这对我有用(在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”部分对于覆盖所需类别的cake的默认css非常重要。)
答案 2 :(得分:0)
这应该这样做:
echo $this->Form->input('User.first_name',
array('div' => array('class' => 'input text')));
或者,您可以在控制器中为unset
required
规则添加unset($this->User->validate['first_name']['ruleName']['required']);
规则,但请注意结果:
{{1}}
答案 3 :(得分:0)
我很惊讶deceze的解决方案对我不起作用(也许我只是做错了),但我最终不得不使用Javascript“手动”从包含div的每个字段中删除所需的类。
答案 4 :(得分:0)
我最后通过手动添加分区。不是很优雅,但它有效:
<?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>
答案 5 :(得分:0)
$("#idOfYourTag").attr("required","false");
这对我有用
答案 6 :(得分:0)
我仍然没有找到一个'正确'的答案,但作为一个快速的黑客你可以尝试不使用表单助手并自己抛出代码
<?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>";
?>