单选按钮列表与文本选项cakephp

时间:2014-12-06 07:25:18

标签: javascript jquery cakephp radio-button

我是CakePHP的新手。我需要制作一个带有单选按钮的表单,最后一个是"其他"用户可以在文本框中输入答案。

FormHelper有没有办法做到内置的这个?

我要做的一种方法是创建一个广播列表和一个文本字段。当"其他"选中Javascript将显示文本字段。为此,除了数据库中的字段之外,我不了解如何使用任何其他变量。如何从可以从视图访问的模型创建变量,并返回值以进行处理?

对于我的模型:

class User extends AppModel {

    /**
     * Display field
     *
     * @var string
     */
    public $displayField = 'title';
    var $sourceOther = ' ';
    var $passwordRepeat = ' ';


    public function beforeSave($options = array()) {
        if (isset($this->data[$this->alias]['password'])) {
            $this->data[$this->alias]['password'] = sha1(
                    $this->data[$this->alias]['password']);
        }
//        $this->data[$this->alias]['created']= CakeTime::gmt();
//        $this->data[$this->alias]['updated']= CakeTime::gmt();
        $this->data[$this->alias]['username']= $this->data[$this->alias]['email'];

        return true;

在视图中我有

echo $this->Form->input('mobilePhone',array(
    'label'=>'Mobile or fixed phone with no spaces'));
echo $this->Form->input('alternatePhone');
echo $this->Form->input('leadSource', array(
    'options'=>array('Google'=>'Google','OnlineAd'=>'Online Ad',
            'Printed Media'=>'Printed Media','LetterDrop'=>'Letter Drop',
            'Other'=>'Other (specify text)'),
    'empty'=>'(choose one)')); 
echo $this->Form->input($this->sourceOther);

...但它不像sourceOther,模型中的变量。如何将视图(文本框)中的数据导入用户模型,以便之前可以使用它做什么?

感谢。

感谢。

1 个答案:

答案 0 :(得分:0)

阅读" Cake PHP Application Development"后将其排序。它适用于Cake 2.x和1.2(在本书中使用)。

在你看来:

echo $this->Form->input('sourceOther');

然后在模型中,您可以使用以下命令访问变量:

$this->data['User']['sourceOther'];

例如,用它来保存"其他" beforesave中的文本字段:

public function beforeSave($options = array()) {
    if (isset($this->data[$this->alias]['password'])) {
        $this->data[$this->alias]['password'] = sha1(
                $this->data[$this->alias]['password']);
    }
    $this->data[$this->alias]['username'] = $this->data[$this->alias]['email'];

    $this->data[$this->alias]['activation'] = md5(uniqid(rand(), true));

    if ($this->data[$this->alias]['leadSource'] == 'Other') {
        $this->data[$this->alias]['leadSource'] =
                $this->data['User']['sourceOther'];
    }
    return true;
}