Я новичок в CakePHP и не понимаю, что я делаю неправильно во время выпечки. Я использую путь CakePHP / App, чтобы испечь мой блог, который имеет две таблицы:
сообщений
Id-integer, установленный на автоинкремент и первичный ключ
заглавие
тело
созданный
модифицированный
Комментарии
id-integer, установленный на автоинкремент и первичный ключ
post_id
название
комментарий
созданный
модифицированный
Ассоциации, которые я намереваюсь иметь, имеют сообщения имеет много комментариев и комментариев, принадлежащих постам
Все модели успешно выпекаются с ассоциациями и проверками. Мои комментарии add.ctp использует выпадающий список и просит пользователя выбрать пост, к которому он хочет прокомментировать. Я хочу, чтобы сообщение устанавливалось автоматически, не спрашивая пользователя. Ниже приведен фрагмент моего действия добавления в 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>
Я предполагаю, что вы хотите перейти от просмотра вашего поста, чтобы добавить комментарий к посту. В таком случае на кнопке у вас будет следующая форма:
<?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();
?>
Это передаст ID сообщения через GET в URL, и вы можете иметь следующее:
<?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
Других решений пока нет …