سلام دوستان من تو بوتسترپ 5 وقتی میخام سطح بندی بی نهایت انجام بدم مقدار parent_id تو دیتابیس ذخیره نمیشه
بخاطر این یه تیکه کد اسکریپت فکر میکنم باشه
$('#sendComment').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget) // Button that triggered the modal
let parent_id = button.data('id');
var modal = $(this)
modal.find('input[name="parent_id"]').val(parent_id)
})
سلام به شما.
طبق مستندات ورژن 4، کدها مثل کدی که شما قرار دادین به صورت زیر است:
$('#exampleModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget) // Button that triggered the modal
var recipient = button.data('whatever') // Extract info from data-* attributes
// If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
// Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
var modal = $(this)
modal.find('.modal-title').text('New message to ' + recipient)
modal.find('.modal-body input').val(recipient)
})
ولی در ورژن 5 باید به صورت زیر نوشته بشه:
var exampleModal = document.getElementById('exampleModal')
exampleModal.addEventListener('show.bs.modal', function (event) {
// Button that triggered the modal
var button = event.relatedTarget
// Extract info from data-bs-* attributes
var recipient = button.getAttribute('data-bs-whatever')
// If necessary, you could initiate an AJAX request here
// and then do the updating in a callback.
//
// Update the modal's content.
var modalTitle = exampleModal.querySelector('.modal-title')
var modalBodyInput = exampleModal.querySelector('.modal-body input')
modalTitle.textContent = 'New message to ' + recipient
modalBodyInput.value = recipient
})
موفق باشید.
@rezajahangir
ممنونم از شما فقط من زیاد سر در نمیارم از این کدها و نمیدونم چطوری باید data_id رو ثبت کنم
این فرم نظرات
<div class="modal fade mt-5" id="sendComment">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">ارسال نظر</h5>
</div>
<form action="{{ route('send.comment') }}" method="post" id="sendCommentForm">
@csrf
<div class="modal-body">
<input type="hidden" name="commentable_id" value="{{ $course->id }}" >
<input type="hidden" name="commentable_type" value="{{ get_class($course) }}">
<input type="hidden" name="parent_id" value="0">
<div class="form-group">
<label for="message-text" class="col-form-label">پیام دیدگاه:</label>
<textarea name="comment" class="form-control" id="message-text"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">لغو</button>
<button type="submit" class="btn btn-primary">ارسال نظر</button>
</div>
</form>
</div>
</div>
</div>
نمایش نظرات
@foreach($comments as $comment )
<div class="box shadow mt-3 mb-3">
<div class="d-flex justify-content-between">
<div class="commenter d-flex">
<img src="{{ $comment->user->getProfileUrl() }}" class="circle" height="50">
<span style="margin-right: 10px">{{ $comment->user->name }}</span>
<span class="text-muted pt-3"> - {{ jdate($comment->created_at)->ago() }}</span>
</div>
@auth
<span class="reply" data-bs-toggle="modal" data-bs-target="#sendComment" data-id="{{ $comment->id }}">پاسخ <i class="fas fa-reply"></i></span>
@endauth
</div>
<div class="card-body text-dark">
{{ $comment->comment }}
@include('layouts.comments' , [ 'comments' => $comment->child ])
</div>
</div>
@endforeach
و کد جاوا اسکریپ که شما زحمت کشیدید فرستادید رو نمیدونستم چطوری بنویسم به این شکل نوشتم که اشتباهه
var exampleModal = document.getElementById('#sendComment')
exampleModal.addEventListener('show.bs.modal', function (event) {
// Button that triggered the modal
var button = event.relatedTarget
// Extract info from data-bs-* attributes
var recipient = button.getAttribute('data-bs-whatever')
// If necessary, you could initiate an AJAX request here
// and then do the updating in a callback.
//
// Update the modal's content.
var modalTitle = exampleModal.querySelector('.modal-title')
var modalBodyInput = exampleModal.querySelector('.modal-body input')
modalTitle.textContent = 'name="parent_id"' + recipient
modalBodyInput.value = recipient
})
کدتونو به صورت زیر بنویسید.
var exampleModal = document.getElementById('sendComment')
exampleModal.addEventListener('show.bs.modal', function (event) {
var button = event.relatedTarget
var parent_id= button.getAttribute('id')
var modalBodyInput = exampleModal.querySelector('input[name="parent_id"]')
modalBodyInput.value = parent_id
})
موفق باشید.
@rezajahangir
ممنونم ، دیگه چیزی ثبت نمیکنه تو دیتابیس به کنترلر هم مربوط میشه؟
public function comment(Request $request)
{
$validData = $request->validate([
'commentable_id' => 'required',
'commentable_type' => 'required',
'parent_id' => 'required',
'comment' => 'required'
]);
auth()->user()->comments()->create($validData);
alert()->success('نظر با موفقیت ثبت شد');
return back();
// return $request->all();
}
خروجی این کدو بفرستید.
public function comment(Request $request) {
$validData = $request->validate([
'commentable_id' => 'required',
'commentable_type' => 'required',
'parent_id' => 'required',
'comment' => 'required'
]);
dd($validData);
}
با کدی که زحمت کشیدید هیچ اتفاقی نمیفته هیچی نمایش نمیده
ولی
با این کد
var myModal = document.getElementById('sendComment')
myModal.addEventListener('shown.bs.modal', event => {
const button = event.relatedTarget;
const parent_id = button.data('id');
const hiddenInput = document.getElementByName('parent_id');
hiddenInput.value = parent_id;
const textarea = document.getElementByName('comment');
textarea.focus();
});
خروجی
array:4 [▼
"commentable_id" => "8"
"commentable_type" => "App\Models\frontend\Course"
"parent_id" => "0"
"comment" => "کامنت جدید"
]
مثل هون کد جیکوئری قبلی فقط parentid برابر با صفر ثبت میشه
الان اومدم بوتسترپ 4 لینک کردم حتی باز هم مقدار parentid همیشه برابر با 0 هست
ولی رو پروژه دیگه که کلا با بوتسترپ 4 و لاراول 8 هست این مشکل وجود نداره
مدل کامنت
class Comment extends Model
{
protected $fillable = [
'comment' ,
'approved' ,
'parent_id' ,
'commentable_id' ,
'commentable_type'
];
public function user()
{
return $this->belongsTo(User::class);
}
public function child()
{
return $this->hasMany(Comment::class , 'parent_id' , 'id');
}
public function commnetable()
{
return $this->morphTo();
}
}
مدل کورس
public function comments()
{
return $this->morphMany(Comment::class, 'commentable');
}
مدل یوزر
public function comments()
{
return $this->hasMany(Comment::class);
}
@codeLover میشه بفرماید ParentID دقیقا چیه ؟ و اینکه توی چه جدولی ذخیره میشه ؟ و اینکه کار اون جداول چیه ؟
خیلی ممنون
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟