【问题标题】:How do I validate multiple fields from a single location in CakePHP?如何从 CakePHP 的一个位置验证多个字段?
【发布时间】:2013-01-03 01:37:58
【问题描述】:

我想在一个地方验证多个字段。所以在一个表格中,我包含了 4 个字段 如下

  1. facebook_link
  2. twitter_link
  3. google_plus_link
  4. linked_in_link

用户至少输入以上任何一个字段。请帮助我获得解决方案,例如,用户在表单中键入任何链接。

【问题讨论】:

    标签: validation cakephp field cakephp-2.3


    【解决方案1】:

    您可以添加自己的验证方法。

    public $validate = array(
        'facebook_link' => array(
            'rule'    => array('validateLink'),
            'message' => '...'
        ),
        'twitter_link' => array(
            'rule'    => array('validateLink'),
            'message' => '...'
        ),
        'google_plus_link' => array(
            'rule'    => array('validateLink'),
            'message' => '...'
        ),
        'linked_in_link' => array(
            'rule'    => array('validateLink'),
            'message' => '...'
        ),
    );
    
    public function validateLink($link) {
        $allFieldsAreEmpty = (
            empty($this->data[$this->alias]['facebook_link']) &&
            empty($this->data[$this->alias]['twitter_link']) &&
            empty($this->data[$this->alias]['google_plus_link']) &&
            empty($this->data[$this->alias]['linked_in_link'])
        );
    
        return !$allFieldsAreEmpty;
    }
    

    【讨论】:

    • 请描述更多你做了什么以及你所说的不工作? (例如错误、意外行为)
    【解决方案2】:

    希望这对你有用。

    public $validate = array(
        'facebook_link' => array(
            'rule'    => array('customValidation','facebook_link'),
            'message' => 'Please enter facebook link.'
        ),
        'twitter_link' => array(
            'rule'    => array('customValidation','twitter_link'),
             'message' => 'Please enter twitter link.'
        ),
        'google_plus_link' => array(
            'rule'    => array('customValidation'),
             'message' => 'Please enter google plus link.'
        ),
        'linked_in_link' => array(
            'rule'    => array('customValidation'),
             'message' => 'Please enter linkedin link.'
        ),
    );
    
    function customValidation($data , $filed) {
        if(empty($data[$filed])) {
            return false;
        }
        return true;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 2018-06-05
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-28
      相关资源
      最近更新 更多