我是cakephp的新手并且在烘焙时无法理解我做错了什么。我使用cakephp / app路径烘焙我的博客,其中有两个表:
帖子 Id整数设置为自动递增和主键 标题 身体 创建 改性
评论 id-integer设置为自动增量和主键 POST_ID 名称 评论 创建 改性
我打算拥有的关联帖子有很多评论和评论都属于帖子 所有模型都通过关联和验证成功烘焙。我的评论add.ctp使用下拉列表并要求用户选择他想要评论的帖子。我想在不询问用户的情况下自动设置帖子.Below是我在commentscontroller.php中添加操作的片段
添加操作
public function add() {
if ($this->request->is('post')) {
$this->Comment->create();
if ($this->Comment->save($this->request->data)) {
$this->Session->setFlash(__('The comment has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The comment could not be saved. Please, try again.'));
}
}
$posts = $this->Comment->Post->find('list');
$this->set(compact('posts'));
}
add.ctp(注释)
<div class="comments form">
<?php echo $this->Form->create('Comment'); ?>
<fieldset>
<legend><?php echo __('Add Comment'); ?></legend>
<?php
echo $this->Form->input('post_id');
echo $this->Form->input('name');
echo $this->Form->input('comment');
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</div>
<div class="actions">
<h3><?php echo __('Actions'); ?></h3>
<ul>
<li><?php echo $this->Html->link(__('List Comments'), array('action' => 'index')); ?></li>
<li><?php echo $this->Html->link(__('List Posts'), array('controller' => 'posts', 'action' => 'index')); ?> </li>
<li><?php echo $this->Html->link(__('New Post'), array('controller' => 'posts', 'action' => 'add')); ?> </li>
</ul>
答案 0 :(得分:0)
我假设您要从帖子视图导航以向帖子添加评论。在这种情况下,按钮将具有以下形式:
<?php echo $this->Form->create('comment', array(
'controller' => 'comment',
'action' => 'add',
'type' => 'get'
));
echo $this->Form->input('id', array(
'type' => 'hidden',
'id' => 'id',
'value' => $this->request->data['Post']['id']
));
echo $this->Form->button('New Comment', array(
'type' => 'submit',
'class' => 'actionButton'
));
echo $this->Form->end();
?>
这将通过URL中的GET传递帖子ID,然后您可以在视图中包含以下内容:
<?php
if (isset($this->request->query['id'])) {
echo $this->Form->input('post_id', array(
'default' => $this->request->query['id']
));
} else echo $this->Form->input('post_id', array(
'empty' => '[select]'
));?>
然后,这将默认情况下将帖子的选项设置为通过GET发送的选项