是的,您需要为此在控制器中创建一个操作。您可能会在投票时通过 ajax 调用它,因此该操作需要使用 json 或 true 或 false 进行响应,您无需为此创建视图。就像是
class EntryController extends AppController {
public function castVote($voteValue) {
//some logic or whatever
$this->Entry->changeValue($voteValue);
//don't create view
$this->autoRender = false;
echo 'all ok or some other message';
return;
}
}
$this->Entry->changeValue($voteValue)
是 Entry 模型中的一个函数,以防您需要在其他地方使用添加值的逻辑(例如,用户只能投票一次)。这样,您就可以重用代码。或者您可以在控制器中添加所有这些逻辑,但我建议不要这样做,最好使用胖模型而不是胖控制器。
如果您希望视图中的 ajax 更新新值,则不是一些随机消息,而是$this->Entry->changeValue($voteValue)
返回实际值,并在控制器中将其回显到视图
//inside controller
$newValue = $this->Entry->changeValue($voteValue);
$this->autoRender = false;
//check that the value is a number, not boolean, so you know the update was valid
echo $newValue;
return;
根据您的解释,我已将功能放在入口模型和控制器中,但将功能放在您认为更符合逻辑的地方。