我有一个名为MembershipAdmin的ModelAdmin扩展名。
class MembershipAdmin extends ModelAdmin {
private static $url_segment = 'membership';
private static $url_handlers = array(
'$ModelClass/$Action' => 'handleAction',
'$ModelClass/$Action/$ID' => 'handleAction'
)
我希望它识别以下操作,并通过以下网址访问该操作:http://www.example.com/admin/membership/Member/ActivateMember/666 - 只能在CMS中访问。
public function ActivateMember() {
$Params = $this->getURLParams();
$id = Convert::raw2sql($Params['ID']);
$Member = Member::get_by_id('Member', $id);
//activate member.
但是,当我运行此ID时,ID不会被识别为URL参数。
通过只能在CMS中访问的URL运行ActivateMember的正确方法是什么?
答案 0 :(得分:1)
这里的问题是第一个URL处理程序是匹配的,而不是第二个。这意味着$ID
不匹配。
这是因为处理程序不需要匹配整个URL并按顺序检查。要更正此问题,只需在列表中首先使用更具体的处理程序($ID
)处理程序。