根据CakePHP中的用户输入修改表单操作

时间:2013-11-16 22:45:34

标签: cakephp

我有一个单选按钮

<?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]')); ?>

我想根据用户是选中“打印到屏幕”还是“下载到文本文件”来调用相应的操作。

我怎么能这样做?

1 个答案:

答案 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'));
    }
}