这是我觉得应该比我做的更容易的事情之一。我有一个下拉列表,其中填充了表中的值。我希望用户选择一个列表项,并让该列表项成为在后续视图中返回一组行的 ID。这是我查看的下拉代码:
echo $this->Form->input('mission_id', array('label' => 'Mission ID'));
echo $this->Html->link(__('View'), array('action' => 'index'));
下面是简单的浏览控制器,它当前返回表中的所有内容:
public function browse() {
$this->set('requirements', $this->Paginator->paginate('Requirement'));
}
我无法弄清楚如何使控制器接收用户选择的值,以便它可以过滤下一个视图。单击"视图"时,它应返回大约 500 行包含所选 ID。我只是不知道在"操作"=>"索引"之后放什么才能将其转移到浏览控制器。
您需要将
input
包装在提交到index
操作的表单中,并将链接替换为提交按钮:-
echo $this->Form->create(null, ['action' => 'index']);
echo $this->Form->input('mission_id', array('label' => 'Mission ID'));
echo $this->Form->submit(__('View'));
echo $this->Form->end();
然后在您的index
操作中使用$this->request->data
检查mission_id
,并从那里执行您需要处理的任何事情:-
public function index() {
if (!empty($this->request->data['ModelName']['mission_id'])) {
// do something with submitted mission_id value
}
}
如果您确实必须使用链接来提交表单,那么您需要考虑使用 JavaScript 使链接提交父表单。但最好为此使用按钮。