目前,我正在创建一个管理我的TO-DO活动的应用程序。
在我的数据库模型中,我创建了一个引用任务表的表,以便我可以创建任务需求。这样,只要我完成所需的任务,我就只能在列表中启动/显示任务。
型号:
该功能完美无缺,但我在您的视图中接收变量的cakephp方式存在问题。
由于父项和子项ID都是[projecttasks] [projecttasks_name],最后一项将覆盖第一项,从而在页面上生成:
但是当我点击编辑时,您可以看到它实际上已正确保存:
现在,在代码中,它在视图中看起来像这样:
<?php foreach ($itemrequirements as $itemrequirement): ?>
<tr>
<td><?php echo h($itemrequirement['Projecttask']['projecttasks_name']); ?></td>
<td><?php echo h($itemrequirement['Projecttask']['projecttasks_name']); ?></td>
<td class="actions">
<?php echo $this->Html->link('View',array('action' => 'detail', $itemrequirement['Itemrequirement']['itemreq_id'])); ?>
<?php echo $this->Html->link('Edit',array('action' => 'edit', $itemrequirement['Itemrequirement']['itemreq_id'])); ?>
<?php echo $this->Form->Postlink('Delete',array('action' => 'delete', $itemrequirement['Itemrequirement']['itemreq_id']),
null, sprintf('Are you sure you want to delete %s?', $itemrequirement['Itemrequirement']['itemreq_id'])); ?>
</td>
</tr>
<?php endforeach; ?>
控制器:
public function index() {
// write redirect information for screens into session
$this->Session->write('Redirector.controllername', 'itemrequirements');
$this->Session->write('Redirector.controllerfunction', 'index');
$this->Session->write('Redirector.recordindex', NULL);
// build index
$this -> Itemrequirement -> recursive = 0;
$this -> set('itemrequirements', $this -> paginate());
// get total record count
$totalItemrequirements = $this -> Itemrequirement -> find('count');
// expose total-count to the view
$this -> set('totalItemrequirements', $totalItemrequirements);
}
我已经问过我的老板了,他指出了这部分(模型文件)。以为我分享了。
/**
* declare BelongsTo relations
*
* @var array $belongsTo
* @link http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#belongsto BelongsTo docs (CakePHP cookbook)
*/
public $belongsTo = array(
'Projecttask' => array(
'className' => 'Projecttask',
'foreignKey' => 'itemreqs_rel_projectparents'
),
'Projecttask' => array(
'className' => 'Projecttask',
'foreignKey' => 'itemreqs_rel_projectchilds'
)
);
有什么方法可以让视图正常工作吗?我是MVC模型的新手,通过使用我们运行的代码生成器来完成大部分代码。
答案 0 :(得分:0)
让您的模型为父母和孩子设置不同的名称,如下所示:
public $belongsTo = array(
'ProjecttaskParent' => array(
'className' => 'Projecttask',
'foreignKey' => 'itemreqs_rel_projectparents'
),
'ProjecttaskChild' => array(
'className' => 'Projecttask',
'foreignKey' => 'itemreqs_rel_projectchilds'
)
);
另外,如果你看一下cake model conventions,你会发现你没有真正正确地设置召唤蛋糕的最小配置的完整力量。它会起作用,但你需要做的比你应该做的更多。