私は、ユーザーがリンクをクリックすることで投稿を高く評価できる簡単なメカニズムを構築しています。URLを介してメソッドを起動できるようにするため、POSTではなくGETを使用しています。
GETを使用してデータを保存するにはどうすればよいですか?このシナリオにはリクエストデータが存在しないため...私のモデルは次のようになります。
class Like extends AppModel
{
public $name = 'Like';
public $belongsTo = array('User','Post');
}
追加の方法は次のようになります。
public function add( $id )
{
$post = $this->Post->find('first', array(
'conditions' => array('Post.id'=>Tiny::reverseTiny($id))
));
if (!$post)
{
throw new NotFoundException('404');
}
if($post['Post']['user_id'] == $this->Auth->user('id'))
{
$this->Session->setFlash('You can\'t like your own post... That\'s just silly!');
}
if ($this->Like->create())
{
$liked = $this->Like->find('first', array(
'conditions' => array('Like.id'=>Tiny::reverseTiny($id), 'Like.user_id'=>$this->Auth->user('id') )
));
if(!$liked){
$this->Like->saveField('user_id', $this->Auth->user('id'));
$this->Like->saveField('post_id', $post['Post']['id']);
$this->redirect(array('controller'=>'posts','action'=>'view','id'=>Tiny::toTiny($post['Post']['id']),'slug'=>$post['Post']['slug']));
} else {
$this->Session->setFlash('You already like this post!');
}
else
{
$this->Session->setFlash('Server broke!');
}
}
誰か助けてもらえますか?
<?php echo $this->Html->link('1', array('controller'=>'followers','action'=>'add','id'=>Tiny::toTiny($post['Post']['id'])),
array('title'=>'Follow','class'=>'follow')); ?>
この部分はすべて正常に機能します。それは私が苦労しているGETのDBに新しい行を保存しています。