我应该如何在模型中声明我的树行为以在CakePHP 2.5.x中保留作用域?
我很简单:我想根据它们各自的菜单id管理多个(链接)树。只要只有一棵树:没问题。当我在链接模型中用不同的菜单id启动另一棵树时,事情就会变得一团糟我应该如何在模型中声明我的树行为以在CakePHP 2.5.x中保留作用域?,cakephp,cakephp-2.5,Cakephp,Cakephp 2.5,我很简单:我想根据它们各自的菜单id管理多个(链接)树。只要只有一棵树:没问题。当我在链接模型中用不同的菜单id启动另一棵树时,事情就会变得一团糟 我希望能够在保留范围(菜单id)的同时添加、编辑、删除、上移或下移。 我不清楚文件的这一部分: 这里是我的链接模型 <?php App::uses('AppModel', 'Model'); class Link extends AppModel { public $name = 'Link'; public $disp
我希望能够在保留范围(菜单id)的同时添加、编辑、删除、上移或下移。 我不清楚文件的这一部分: 这里是我的链接模型
<?php
App::uses('AppModel', 'Model');
class Link extends AppModel {
public $name = 'Link';
public $displayField = 'title';
public $actsAs = array('Tree' => array(
'parent' => 'parent_id',
'left' => 'lft',
'right' => 'rght',
'scope' => "WHAT-SHOULD-I-PLACE-HERE??",
));
public $belongsTo = array(
'Menu' => array(
'className' => 'Menu',
'foreignKey' => 'menu_id',
)
);
}
范围基本上是一个SQL条件(蛋糕格式)
因此,您可能需要将作用域设置为所需的菜单ID
'scope' => array(
'Link.menu_id' => 5
);
但是,在尝试在类定义上设置数组时,您可能还不知道是哪个ID,因此您可能需要动态地进行设置
$this->Link->Behaviors->attach('Tree', array(
'scope' => array(
'Link.menu_id' => $id // You need to decide how to get this ID
),
));
我不知道你什么时候需要这么做。由您决定何时附加该行为
编辑:如果moveUp/moveDown方法工作不正常,可能是您使用的范围字段不正确?范围基本上是SQL条件(蛋糕格式)
因此,您可能需要将作用域设置为所需的菜单ID
'scope' => array(
'Link.menu_id' => 5
);
但是,在尝试在类定义上设置数组时,您可能还不知道是哪个ID,因此您可能需要动态地进行设置
$this->Link->Behaviors->attach('Tree', array(
'scope' => array(
'Link.menu_id' => $id // You need to decide how to get this ID
),
));
我不知道你什么时候需要这么做。由您决定何时附加该行为
编辑:如果moveUp/moveDown方法工作不正常,可能是您使用的范围字段不正确?范围基本上是SQL条件(蛋糕格式)
因此,您可能需要将作用域设置为所需的菜单ID
'scope' => array(
'Link.menu_id' => 5
);
但是,在尝试在类定义上设置数组时,您可能还不知道是哪个ID,因此您可能需要动态地进行设置
$this->Link->Behaviors->attach('Tree', array(
'scope' => array(
'Link.menu_id' => $id // You need to decide how to get this ID
),
));
我不知道你什么时候需要这么做。由您决定何时附加该行为
编辑:如果moveUp/moveDown方法工作不正常,可能是您使用的范围字段不正确?范围基本上是SQL条件(蛋糕格式)
因此,您可能需要将作用域设置为所需的菜单ID
'scope' => array(
'Link.menu_id' => 5
);
但是,在尝试在类定义上设置数组时,您可能还不知道是哪个ID,因此您可能需要动态地进行设置
$this->Link->Behaviors->attach('Tree', array(
'scope' => array(
'Link.menu_id' => $id // You need to decide how to get this ID
),
));
我不知道你什么时候需要这么做。由您决定何时附加该行为
编辑:如果moveUp/moveDown方法工作不正常,可能是您使用的范围字段不正确?多亏了BadHorsie我终于明白,在模型的行为设置中声明范围是毫无意义的
相反,您(目前我)需要动态附加该行为,在任何操作(添加、编辑、上移、下移等)之前具有所需的范围,以使其工作
现在,我需要确保的是链接总是有一个菜单id。
当有人编辑链接时,必须根据菜单id下拉列表重新填充父id下拉列表(此处需要javascript,模型中需要更多验证规则以确保完整性)
解决方案是在链接模型中创建一个新函数。它的目标是在对树进行任何修改(上移、下移、从树中移除、删除等)时保留范围
多亏了BadHorsie,我终于明白了在模型的行为设置中声明范围是毫无意义的
相反,您(目前我)需要动态附加该行为,在任何操作(添加、编辑、上移、下移等)之前具有所需的范围,以使其工作
现在,我需要确保的是链接总是有一个菜单id。
当有人编辑链接时,必须根据菜单id下拉列表重新填充父id下拉列表(此处需要javascript,模型中需要更多验证规则以确保完整性)
解决方案是在链接模型中创建一个新函数。它的目标是在对树进行任何修改(上移、下移、从树中移除、删除等)时保留范围
多亏了BadHorsie,我终于明白了在模型的行为设置中声明范围是毫无意义的
相反,您(目前我)需要动态附加该行为,在任何操作(添加、编辑、上移、下移等)之前具有所需的范围,以使其工作
现在,我需要确保的是链接总是有一个菜单id。
当有人编辑链接时,必须根据菜单id下拉列表重新填充父id下拉列表(此处需要javascript,模型中需要更多验证规则以确保完整性)
解决方案是在链接模型中创建一个新函数。它的目标是在对树进行任何修改(上移、下移、从树中移除、删除等)时保留范围
多亏了BadHorsie,我终于明白了在模型的行为设置中声明范围是毫无意义的
相反,您(目前我)需要动态附加该行为,在任何操作(添加、编辑、上移、下移等)之前具有所需的范围,以使其工作
现在,我需要确保的是链接总是有一个菜单id。
当有人编辑链接时,必须根据菜单id下拉列表重新填充父id下拉列表(此处需要javascript,模型中需要更多验证规则以确保完整性)
解决方案是在链接模型中创建一个新函数。它的目标是在对树进行任何修改(上移、下移、从树中移除、删除等)时保留范围
“我希望能够在保留范围(菜单id)的同时添加、编辑、删除、上移或下移”-您能举一个意外结果(数据+操作)的例子吗