下载CakePHP 3.x URL的菜单到视图

时间:2015-11-21 04:13:30

标签: php cakephp cakephp-3.0

我有一个名为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“with primary key [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版。如果您需要更多信息,请与我们联系!

1 个答案:

答案 0 :(得分: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()函数中提取了它。如果有人有更多的语法非hackish解决方法,请告诉我!