解決できない問題に遭遇しました。
Facebook のものに似た壁を作成しましたが、すべて正常に動作します。私がやったことのないことは、この方法でコメントを返すことです。ストリーム投稿にコメントを返す方法がわかりません。
これが私のコードです
モデル
class Main extends \Model {
static function post_stream()
{
DB::set_charset('utf8');
$query = DB::insert('stream_post');
$query->set(array(
'stream_text' => \Input::post('stream_post'),
'user_id' => \Session::get('sentry_user'),
//'date' => time(),
));
$query->execute();
}
static function get_stream()
{
$query = DB::select()->from('stream_post');
$query->join('users_metadata');
$query->on('stream_post.user_id', '=', 'users_metadata.user_id');
$query->order_by('stream_post.stream_id', 'DESC');
$result = $query->execute();
foreach($result as $row)
{
$data[] = $row;
}
return $data;
}
static function post_stream_comment()
{
$query = DB::insert('stream_comment');
$query->set(array(
'user_id' => \Session::get('sentry_user'),
'stream_id' => \Input::post('comment_post'),
'comment_text' => \Input::post('comment_text'),
)
);
$query->execute();
}
ビュー(これをjQueryロードでロードします)
<div class="stream-posts">
<?php foreach($posts as $post): ?>
<div id="post_<?php echo $post['stream_id']; ?>" class="span6 stream-content">
<span class="user"><a href="#"><?php echo $post['full_name']; ?></a></span>
<p><?php echo Input::auto_link(Input::nl2br_limit($post['stream_text'], 2)); ?></p>
<div class="clear"></div>
<div class="feedback">
<a href="#" class="like" rel="nofollow">Tetszik</a> -
<a href="#" class="comment" rel="nofollow">Hozzászólás</a>
</div>
<div class="clear"></div>
<div class="stream-comment">
<form class="stream-comment-form">
<input type="hidden" name="comment_post" value="<?php echo $post['stream_id']; ?>">
<textarea name="comment_text"></textarea>
<button type="submit" class="btn btn-primary btn-mini pull-right">Hozzászólok</button>
</form>
</div>
</div>
<div class="clear"></div>
<?php endforeach; ?>
</div>
コントローラ
function action_loadstream()
{
$data['posts'] = Main::get_stream();
$data['comments'] = Main::get_stream_comment();
return View::forge('main/loadstream', $data);
}
function action_post_stream()
{
Main::post_stream();
$data['get'] = Main::get_stream();
$stream = json_encode(
array(
'full_name' => $data['get'][0]['full_name'],
'stream_text' => Input::auto_link(Input::nl2br_limit($data['get'][0]['stream_text'], 2)),
'stream_id' => $data['get'][0]['stream_id'],
)
);
return $stream;
}
jQuery
//stream load
$('#stream-load').load(site_url + "main/loadstream", function(){
//oembed();
$('.stream-comment textarea').elastic();
});
//stream comment send
$('.stream-comment-form').on('submit', function(){
var commentData = $(this).serialize();
$.ajax({
type: "post",
url: site_url + "main/post_stream_comment",
data: commentData,
success: function()
{
alert('yay');
}
});
return false;
});
}, 100000).hide().fadeIn("slow");
function embedHtml(stream)
{
var html = '';
html += '<div class="span6 stream-content">';
html += '<p class="stream-user"><a href="#">'+stream.full_name+'</a></p>';
html += '<p>'+stream.stream_text+'</p>';
html += '<div class="clear"></div>';
html += '<div class="feedback">';
html += '<a href="">Tetszik</a> - ';
html += '<a href="#" class="comment">Hozzászólás</a>';
html += '</div>';
html += '<div class="clear"></div>';
html += '</div>';
html += '<div class="clear"></div>';
return html;
}
//stream post send
$('#stream-form').on('submit', function(){
var streamData = $(this).serialize();
$('#stream-submit').attr('disabled', 'disabled');
$.ajax({
type: "post",
url: site_url + "main/post_stream",
data: streamData,
dataType: "json",
success: function(stream)
{
$('#stream-submit').removeAttr('disabled', 'disabled');
$('#stream textarea').val('');
$('#stream-load').prepend(embedHtml(stream));
$('.stream-posts:first-child').hide().slideDown("slow");
//oembed();
}
});
return false;
});
まず、誰かにこれを書いてもらいたくありません。より経験豊富な開発者に私のコードを調べてもらい、コメント ロジックを返すためのヒントを教えてもらいたいだけです。