CakePHP:使用下拉列表中的值来填充视图


CakePHP: Use value from dropdown to populate a view

这是我觉得应该比我做的更容易的事情之一。我有一个下拉列表,其中填充了表中的值。我希望用户选择一个列表项,并让该列表项成为在后续视图中返回一组行的 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 使链接提交父表单。但最好为此使用按钮。