ارسال نظر

زمان قرارگیری : 18 اردیبهشت 1399
زمان این قسمت : 14:40
برای دسترسی به این دوره نیاز است بصورت نقدی این دوره را خریداری کنید و این دوره بخشی از دوره های اعضای ویژه نمیباشد

تعداد شرکت کنندگان 328 نفر
قیمت دوره 259000 تومان
وضعیت دوره در حال برگزاری
زمان کل دوره 26:39:36
تعداد قسمت‌ها 117
نوع دسترسی نقدی

در این جلسه یاد میگیریم که چطور باید یک نظر را از صفحه محصولات ارسال و ذخیره سازی کنیم با توجه به اینکه در حال استفاده از رابطه polymorphic هستیم.

بخش اول
مقدمات
رایگان 09:10
بخش ششم
مفاهیم هسته لاراول
برای دسترسی به این دوره نیاز است بصورت نقدی این دوره را خریداری کنید و این دوره بخشی از دوره های اعضای ویژه نمیباشد

تعداد شرکت کنندگان 328 نفر
قیمت دوره 259000 تومان
وضعیت دوره در حال برگزاری
زمان کل دوره 26:39:36
تعداد قسمت‌ها 117
نوع دسترسی نقدی

آفلاین
user-avatar
مدرس دوره حسام موسوی

اول داستان، طراح گرافیک بودم و ۲ سالی به عنوان طراح مشغول بودم، بعد به برنامه‌نویسی علاقمند شدم و الان بیشتر از ۱۰ ساله که عاشق کدزنی و چالش‌های پروژه‌های مختلفم. به تدریس علاقه خاصی دارم و دوست دارم دانشی که در این راه بدست آوردم را در اختیار دیگران هم قرار بدم. 

سوالات و گفتگو‌ها

سوالات و گفتگو‌ها

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

دورهای پیشنهادی

مشاهده همه دوره ها
آشنایی با امکانات جدید لاراول 5.5

آشنایی با امکانات جدید لاراول 5.5

در همین ابتدای این دوره باید بگم کسانی میتونن این دوره رو مشاهده کنند که با لاراول آشنا باشن پس اگر هنوز نمی دونید که لاراول چطور کار میکنه ، لطف ابتد...

آشنایی با امکانات جدید لاراول 5.4

آشنایی با امکانات جدید لاراول 5.4

در همین ابتدای این دوره باید بگم کسانی میتونن این دوره رو مشاهده کنند که با لاراول آشنا باشن پس اگر هنوز نمی دونید که لاراول چطور کار میکنه ، لطف ابتد...

آشنایی با امکانات جدید لاراول 5.3

آشنایی با امکانات جدید لاراول 5.3

لاراول ۵.۳ بزودی به طور رسمی ارائه میشه اما نسخه develop اون چند وقتی میشه که در اختیار کاربران قرار گرفته در این دوره آموزشی سعی میکنیم که امکانات و...

دسترسی رایگان برای اعضای ویژه
آشنایی با امکانات جدید لاراول 5.2

آشنایی با امکانات جدید لاراول 5.2

لاراول 5.2 بزودی به طور رسمی ارائه میشه اما نسخه develop اون چند وقتی میشه که در اختیار کاربران قرار گرفته در این دوره آموزشی سعی میکنیم که امکانات و...

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
آفلاین
user-avatar
آرش
3 ماه پیش

با سلام
یه سوالی که حالا زیادم مربوط به این جلسه نیست:
اگر بخوام وقتی روی دکمه جزئیات محصول هاور می‌کنم، اون مقدار لینکش که products/2 هست، مخفی بمونه، باید چیکار کنم؟ چیزی شبیه دکمه ایجاد لینک دانلود جلسه‌ها. یعنی طوری‌که در عین استفاده از تک a، محتویات href اون قابل مشاهده و بررسی نباشه. اگر توی جلسه دیگه‌ای هم اینو توضیح داده‌اید لطفا بفرمائید تا برم اونو ببینم.
با تشکر

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

متوجه نشدم شما یه url میسازید محتویاتش مخفی باشه !؟
پس چرا اصلا ساختید اونو !

آفلاین
user-avatar
آرش
3 ماه پیش

فکر کنم خوب نگفتم:
الان وقتی روی دکمه جزئیات محصول هاور می‌کنیم، محتویات لینکش مشخصه، خصوصا id محصول (products/2). حالا بعضی جاها لازمه این id (و یا حتی سایر قسمت‌های لینک)، مشخص نباشه و مخفی بمونه. بعنوام مثال، توی سایت راکت، برای دکمه ارسال دیدگاه، از data استفاده کرده‌اید که id اون کامنت رو نشون میده. حتی بعضی جاها همون id هم مشخص نیست و با استفاده از جاوااسکریپت، عملیات دکمه را هندل می‌کنن. میشه شیوه ایجادش را بگین؟
با تشکر

آفلاین
user-avatar
حسام موسوی
2 ماه پیش

ببینید محتوای hrtef در هر حال مشخصه
اگر قرار هست با دکمه حزئیات وارد صفحه دیگه‌ای بشن بیادم مشخص باشه چون کاربر رو منتقل میکنه اما اگر درخواست به شکل ajax هست که ازش استفاده میکنید
این نیاز به دانش جاوااسکریپت داره کسی هم که جاوااسکریپت بلده اینو میدونه

آفلاین
user-avatar
ebi_papidon
1 ماه پیش

سلام
در بخشی از آموزش شما اشاره به این میکنید که برای کامنت ها هم ریکپچا بهتره گذاشته بشه
آیا این برای حالتی خواهد بود که در نظر نگیریم که فقط کاربران ثبت نام کرده به کامنت دسترسی داشته باشند چون در غیر این صورت ربات چطور میتونه به ارسال کامنت دسترسی داشته باشه یا اینکه بصورت کلی برای امنیت بیشتر منظورتون هستش که کلا در هر دو حالت باید ریکپچا گذاشته بشه ؟!

آفلاین
user-avatar
حسام موسوی
1 ماه پیش

بله در صورتی که کاربر ثبت نام نشده باشه نیازه از recaptcha استفاده کنید
اگر هم کاربر ثبت نام کرده باشه در هنگام ورود چون از recaptcha استفاده میشه دیگه نیازی نیست بنظر بهش

آفلاین
user-avatar
reza ataei
3 ماه پیش

سلام مهندس و ممنون بابت آموزش بی نظیرتون..
من عین آموزش شما پیش رفتم و در موقع ثبت نظر ارور میده که فیلد commentable_id , commentable_type باید یه مقدار دیفالت داشته باشه و وقتی مقدار دیفالت 0 بهشون تو جدول میدم بدرستی نظر ثبت میشه میخواستم بپرسم که مقدار دیفالت دادن به این دو تا ایرادی ایجاد نکنه بعدا ؟
ممنونم از شما

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

نه قربون شکلت مقدار پیش فرض نباید براشون ثبت کنید ، این ها باید حتما در هنگام ثبت نظر مقدار دهی بشن!!!

آفلاین
user-avatar
reza ataei
3 ماه پیش

موقع ثبت نظر ولی مقدار دهی میشن مهندس جانتصویر

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

اوکی ولی مقدار پیش فرض قرار ندیدید برای commentable_id , commentable_type تا اگر وجود نداشت بهتون ارور بده

آفلاین
user-avatar
reza ataei
3 ماه پیش

واقعا ممنون

آفلاین
user-avatar
ZR
3 ماه پیش

سلام استاد.من سیستم نظرات رو به شیوه ای دیگه و با استفاده از دو جدول و متد attach یا sync پیاده کردم که نیاز به commentable_id و commentable_type در فرم ثبت نظر نباشه:
مایگریشن رو به صورت زیر:

    public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->id();
            $table->unsignedInteger('parent_id')->default(0);
            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->text('body');
            $table->boolean('approved')->default(0);
            $table->timestamps();
        });
        Schema::create('commentables' , function (Blueprint $table){
        $table->unsignedBigInteger('comment_id');
        $table->unsignedBigInteger('commentable_id');
        $table->string('commentable_type');
        $table->foreign('comment_id')->references('id')->on('comments')->onDelete('cascade');
        $table->primary(['comment_id' , 'commentable_id' , 'commentable_type']);
        });
    }

مدل Comment.php

    public function commentable()
    {
        $this->morphTo();
    }

    public function products()
    {
        return $this->morphedByMany(Product::class , 'commentable');
    }

مدل User.php

    public function comments()
    {
        return $this->hasMany(Comment::class);
    }

روت web.php

Route::post('/products/{product}' , 'SingleProductController@sendComment')->name('user.comment.store');

کنترلر SingleProductController.php: با استفاده از متد attach(یا sync) کامنت برای محصول مورد نظر سینک کردم

    public function sendComment(Request $request , Product $product)
    {

            $data = $request->validate([
                'body' => ['required' , 'min:5'],
                'parent_id' => ['required']
            ]);
            $comment = $request->user()->comments()->create($data);
            $comment->products()->attach($product->id);
        return back();
    }

و form.blade.php

<form action="{{route('user.comment.store' , $product->id)}}" method="post">
    @csrf
    <input type="hidden" name="parent_id" value="0">
<div class=" @error('body') has-error has-feedback @enderror">
    <textarea class="form-control" name="body" rows="8" placeholder="متن دیدگاه شما...">{{old('body')}}</textarea>
    {!! $errors->first('body', '<div class="help-block"><b>:message</b></div>') !!}
    <br>
    <button class="btn btn-success pull-left">ارسال دیدگاه</button>
</div>
</form>

این نحوه پیاده سازی هم قابل قبوله یا بهتره از دو جدول استفاده نکنیم؟

آفلاین
user-avatar
حسام موسوی
3 ماه پیش

به نظرم اصلا نیازی به اینکار نیست که جدول جداگانه قرار بدید برای دوتا فیلد commentable_id و commentable_type
و بهتر هست روند تعریف شده رو جلو برید