【问题标题】:CakePhp validate a select field with values from other modelCakePhp 使用来自其他模型的值验证选择字段
【发布时间】:2015-04-20 23:57:22
【问题描述】:

我在MembersController 中为我的register 操作创建了一个vue。但是当我使用来自MemberType 模型的值添加一个名为memberType 的字段时。我无法验证此字段。我愿意接受任何建议,谢谢! :)

查看 add

<?php
    echo $this->Form->create('Member', array(
        "type" => "file",
        "url"  => array("controller" => "Member", "action" => "add"),
        "inputDefaults" => array("class" => "form-control", "div" => "form-group")
    ));

    echo $this->Form->input("Member.NAME", array(
        "error" => array(
            "attributes" => array("escape" => false, "wrap" => "span", "class" => "alert-danger")
        )
    ));

    echo $this->Form->input("Membertype", array(
        "type" => "select",
        "empty" => true,
        "error" => array(
            "attributes" => array("escape" => false, "wrap" => "span", "class" => "alert-danger")
        )
    ));

    echo $this->Form->end(array(
        "label" => "Register",
        "class" => "btn btn-primary"
    ));
?>

控制器 MemberController

<?php
class MembresController extends AppController {
    public function register(){
        $this->set('membertypes', $this->Member->MemberType->find('list'));

        if ($this->request->is('post')) {
            $this->Membre->create();
            if ($this->Membre->save(array(
                "Membre" => array(
                    "NAME" => $this->request->data["NAME"],
                    "type_id" => $this->request->data["Membertype"],
                )
            ))) {
                $this->Session->setFlash(
                    'Registred',
                    "default",
                    array("class" => "alert alert-success")
                );
                return $this->redirect(array('action' => 'index'));
            }
            $this->Session->setFlash(
                "Not registered",
                "default",
                array("class" => "alert alert-danger")
            );
        }
    }
}

Members 表:

create table Member
(
   ID                   int not null AUTO_INCREMENT,
   type_id              int not null,
   NOM                  varchar(255) not null,
   primary key (ID)
);

MemberType 表:

create table MemberType
(
   ID                   int not null AUTO_INCREMENT,
   NAME                 varchar(255) not null,
   primary key (ID)
);

【问题讨论】:

  • 我认为您应该检查 Member 模型的验证数据。您只想在控制器中检查 Member 模型的验证???

标签: validation cakephp select field


【解决方案1】:

这可能不是官方的做法,但如果这些字段嵌套在您的数据数组中,您可以验证这些字段..

$saveData = [
'YourSavingModel' =>  [
   'name' => 'blub',
   'MemberType' => [whatever]
]

现在您可以将“MemberType”添加到您的 $model->validate 中,它还将根据您的规则验证这些值..

请注意,它不会以这种方式保存信息。

验证后,您需要将数组更改为您现在拥有的方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 2014-08-17
    • 1970-01-01
    • 2011-06-05
    • 2020-11-29
    相关资源
    最近更新 更多