我有一个单选按钮
<?php echo $this->Form->radio('viewoptions', array('process' => 'Print to Screen',
'download' => 'Download to Text File')); ?>
在表单中
<?php echo $this->Form->create('Recipe', array('action'=>'[process or download]')); ?>
我想根据用户是选中“打印到屏幕”还是“下载到文本文件”来调用相应的操作。
我怎么能这样做?
答案 0 :(得分:2)
为了实现这一点,您将在客户端拥有javascript依赖关系。最好验证控制器逻辑中要采取的操作。只需创建一个整体处理程序并指向表单中的那个。所以在你的视图中添加如下:
echo $this->Form->create('Recipe', array('action' => 'handler'));
在你的控制器中:
public function handler() {
// Sanity check
if (!isset($this->request->data['Recipe']['viewoptions'])) {
throw new InternalErrorException(__('No viewoptions passed'));
}
// Make the decision
switch ($this->request->data['Recipe']['viewoptions']) {
case 'process':
// Run the process method logic
$this->process();
break;
case 'download':
// Run te download method logic
$this->download();
break;
default:
throw new InternalErrorException(__('Unknown viewoptions passed'));
}
}