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
));