Paradox
2 سال پیش توسط Paradox مطرح شد
9 پاسخ

سطح بندی بی نهایت نظرات

سلام دوستان من تو بوتسترپ 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)
        })

ثبت پرسش جدید
رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 2 سال پیش مطرح شد
-1

سلام به شما.
طبق مستندات ورژن 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
})

موفق باشید.


Paradox
تخصص : در حال یادگیری
@paradox 2 سال پیش مطرح شد
0

@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
        })

رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 2 سال پیش مطرح شد
0

کدتونو به صورت زیر بنویسید.

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
})

موفق باشید.


Paradox
تخصص : در حال یادگیری
@paradox 2 سال پیش مطرح شد
0

@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();
    }

Paradox
تخصص : در حال یادگیری
@paradox 2 سال پیش مطرح شد
0

دوستان میتونید راهنمایی کنید ؟
خیلی مهمه


رضا جهانگیر
تخصص : Full-Stack Developer
@rezajahangir 2 سال پیش مطرح شد
0

خروجی این کدو بفرستید.

public function comment(Request $request) {
    $validData = $request->validate([
         'commentable_id' => 'required',
         'commentable_type' => 'required',
         'parent_id' => 'required',
        'comment' => 'required'
    ]);
    dd($validData);
}

Paradox
تخصص : در حال یادگیری
@paradox 2 سال پیش آپدیت شد
0

@rezajahangir

با کدی که زحمت کشیدید هیچ اتفاقی نمیفته هیچی نمایش نمیده

ولی
با این کد

      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);
    }

احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

@codeLover میشه بفرماید ParentID دقیقا چیه ؟ و اینکه توی چه جدولی ذخیره میشه ؟ و اینکه کار اون جداول چیه ؟
خیلی ممنون


Paradox
تخصص : در حال یادگیری
@paradox 2 سال پیش مطرح شد
0

دوستان کسی میدونه مشکل رو چجوری حل کنم؟
مقدار parent_id همیشه صفر ثبت میشه تو دیتابیس


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام