我有一个名为a_forms的表,我正试图在AForms页面上创建一个下拉菜单,该菜单包含a_forms的所有行。我希望下拉列表中的每个选项都能直接链接到该表单的视图。这是我的表单表:
fid int(3)unsigned auto_increment(主键)
title varchar(100)
更新时创建的时间戳CURRENT_timestamp
修改的时间戳
我能够填充下拉菜单,但我在第二部分遇到了问题——将每个选项与所选视图链接起来。我是CakePHP的初学者,所以我可能错过了一些东西。以下是AFormsController中的功能:
public function forms($id = null)
{
$query = $this->AssessmentForms->find('all');
$result = $query->toArray();
$assessmentForm = $this->AssessmentForms->get($id, [ 'contain' => [] ]);
$this->set('assessmentForm', $assessmentForm);
$this->set('_serialize', ['assessmentForm']);
$data = $this->AssessmentForms->find('list', array('fields' => array('fid', 'title')));
$this->set('forms', $data);
}
forms.ctp:
<?php $this->Form->input('aform.select one', ['type' => 'select', 'options' => $forms, 'empty' => 'Choose One', 'onchange' => 'this.form.submit();']);?>
这给了我"在表"a_forms"中找不到主键为NULL的记录"
我也试过:
<?php $this->Form->create('Forms', array( 'url' => ['controller'=>'a_forms', 'action'=>'view', $aForm->fid])); ?>
并将其添加到控制器中:
$aForms = $this->AForms->find('list');
它没有抛出错误,但我在视图中得到了一个"未定义的变量:aForms[APP/Template/aForms/forms.ctp,第10行"
我看到其他人在使用"onchange"方法,所以我不确定这是否是正确的方法。我使用的是3.1.0版本。如果您需要更多信息,请告诉我!
仍然不太知道如何使用find()适当地创建查询,但我找到了一种方法:
<ul class="dropdown-menu">
<?php foreach ($aForms as $aForm): ?>
<li> <?= $this->Html->link($aForm->title, ['action' => 'fill', $aForm->fid]) ?></li>
<?php endforeach; ?>
</ul>
控制器中的这个:
$this->set('assessmentForms', $this->paginate($this->AssessmentForms));
$this->set('_serialize', ['assessmentForms']);
我直接从烘焙生成的index()函数中提取了它。如果有人有一种更语法化的非技巧性方法来解决这个问题,请告诉我!