从CakePHP中的控制器验证字段

时间:2016-10-21 20:42:32

标签: validation cakephp

我遇到了问题。我的ordertypes中有字段$this->request->data['Workposition']。此字段不是Workposition模型中的字段,但我需要验证此字段不为空。这是三个复选框的列表(选中复选框时为0,否则为1)。因此,我需要在我的控制器中直接添加验证,以便至少有一个复选框设置为1(已选中)。 我在尝试

if (all three checkboxes are set to `0`) 
$this->Workposition->validationErrors['ordertypes'] = __('Choose at least one ordertype');

但它不起作用,因为此字段不是此Workposition模型的字段。添加$this->Workposition->set($this->request->data);$this->Workposition->validates();没有帮助。

1 个答案:

答案 0 :(得分:0)

你可以在你的控制器动作中放置一个try catch块,如果所有三个复选框都为空,则抛出异常。

public function myControllerMethod()
{
    try {
        if (all three checkboxes are zero) {
            throw new Exception('Select a checkbox');
        }
    } catch (Exception $e) {
        $this->data = array(
            'sucess' => false,
            'message' => $e->getMessage()
        );
    }
}

http://book.cakephp.org/2.0/en/development/exceptions.html http://php.net/manual/en/language.exceptions.php