长话短说:我正在将 Facebook API (PHP-SDK) 与 CakePHP 集成(我知道 GitHub 上已经存在集成,但我将此练习用作 CakePHP 和 MVC 的一般学习曲线)。我的问题如下:
我有一个控制器操作,它以非常简单的格式返回朋友列表:
$data = array(
'friends' => $this->_facebook->api('/me/friends')
);
$this->set($data);
$data
然后被发送到相应的视图,此时我只是在调用print_r($friends);
它,这就像一个魅力。但是,我想对朋友数组进行升序和降序排序,在 MVC 世界之前,我正在使用这个函数:
public function listFriends($sort = "") {
$sort = strtolower($sort);
$friend_array = $this->_facebook->api('/me/friends');
$friends = array();
switch ($sort) {
case "asc":
foreach($friend_array['data'] as $friend) {
$friends[$friend['id']] = $friend['name'];
}
natcasesort($friends);
return $friends;
break;
case "desc":
foreach($friend_array['data'] as $friend) {
$friends[$friend['id']] = $friend['name'];
}
arsort($friends);
return $friends;
break;
default:
foreach($friend_array['data'] as $friend) {
$friends[$friend['id']] = $friend['name'];
}
return $friends;
}
}
我的问题是:如何在 CakePHP 中实现相同的功能,我在哪里可以放置“自定义”listFriends()
函数?我的理解是,如果我将它放入控制器中,那么有人可能会通过调用http://example.com/controller/listFriends来访问它,我显然希望避免这种情况。我还假设.ctp文件不是放置此代码的最佳位置,那么在哪里呢?