رفتن به مطلب
انجمن پشتیبانی لاراول ایران
digiman

ساخت روت با آیدی (مربوط به ویدئو جلسه 10)

Recommended Posts

با سلام و عرض ادب و احترام خدمت همه ، مخصوصا جناب استاد طالبی

در ویدئو دهم از آموزش لاراول در زمان 13:11 از این ویدئو، استاد به نکته ظریفی بنظرم اشاره کرده اند.

ایشون میگویند نیایید در روت بعد از آدرس بنویسید {id} بلکه باید نوشت {category} . ایشان سپس به صفحه ایندکس مراجعه میکنند و آی دی را در داخل حلقه فور برای هر مطلب جداگانه پاس می کنند:

@foreach ($Categories as $Category)
        {{ $Category->id }}        
        <a href="{{ route('show', $Category->id) }}">  {{ $Category->title}} </a>
        {{ $Category->desciption }}
        <hr>
    @endforeach

من متوجه شدم که اگر کلمه آیدی در ایندکس عوض شود اطلاعات از دیتابیس پاس نمی شوند.

همچنین اگر کلمه category که بعد از روت عوض شود، باز هم اطلاعات از دیتابیس پاس نمی گردند:

Route::get('categories/{category}', 'CategoryController@show')->name('show');

من هرچقدر فکر کردم متوجه نشدم چه ارتباطی بین رابطه دیتابیس و این دو کلمه وجود داره؟ اصلن راستش یکم گیج شدم در این نقطه.

اگر یکی از دوستان در این زمینه روشنگری کنه که دقیقا کار آیدی و کتگوری چیه و چرا اگر عوض بشن همه چیز بهم میخوره، خیلی ممنون میشم.

با تشکر

علی

Share this post


Link to post
Share on other sites

خب فکر کنم متوجه شدم... از توضیحی که استاد هم در ویدئو دادند اینطور بر میاد که:

وقتی در حلقه فور صفحه مدیریت دسته بندی ها، ما با اولین آیدی مواجه می شویم، تگ href آن، ما را به روت show می برد و البته آیدی نیز در این اثناء ارسال می شود. روت show ما را به کنترلر و سپس تابع مربوطه یعنی تابع show می رساند. تابع show یکی از توابع موجود در کنترلر است دو آرگومان رو از قبل گرفته و سپس در پشت صحنه، این دو آرگومان ما رو به اپ category و table آن متصل می کنند. این آرگومان category$ موجود در تابع show است که توسط دستور return اطلاعات کلاس category رو به صفحه بلید ارسال می کند..........{جای سوال}...... متغیر آیدی مثل تایتل و توضیحات جزو این اطلاعات ارسالی است. متغیرهای ارسال شده در بلید نمایش داده می شوند.

حالا من تو یه مرحله موندم که در پشت صحنه اتفاق میوفته و همون {جای سوال} بالاست:

چطور لاراول در این مرحله متوجه شده که باید آرایه نظیر به نظیر رو به category$ ارسال کنه؟ یا بعبارت دیگه چرا category$ الان فقط شامل یک پست هستش و دیگه نیازی به حلقه فور نداریم؟

ممنون

 

Share this post


Link to post
Share on other sites

سلام و عرض ادب برای درک بیشتر شما از مبحث روت ها میخوام اساس کار رو توضیح بدم البته اساتید جسارت بنده رو ببخشن :دی

نقل قول

آقای طالبی توضیحات تکمیلی رو دادن من فقط دارم تکرار میکنم :) + یکمی توضیحات کوچولو

Route::get('categories/{category}', 'CategoryController@show')->name('show');

در مثال بالا ما یک پارامتر تحت عنوان category را در لینک قرار دادیم. کاربر با کلیک روی اون، این پارامتر را از طریق request به route منتقل کردیم. route نیز این پارامتر را به controller انتقال داد تا پردازش بشه. حالا شما در controller یک model رو فراخوانی کردین به این صورت

//فراخوانی Model
use App\Category;


//کنترلر show
public function show(Category $category)
    {
         
    }

حالا من یک لینک دارم به این صورت:

<a href="{{ route('show',$category->id) }}" >دسته بندی اخبار ورزشی رو میخوام ببینم</a> 

حالا با زدن روی لینک یک درخواست میفرستیم و و روت پارامتر رو به کنترلر انتقال میده و از model میخونه و نمایش میده.

اگر شما بخواین پارامتر رو تغییر بدید باید باید کلوژر( Closure )  رو تغییر بدید برای مثال من میخوام کلوژر رو تغییر بدم و به dasteha تغییر بدم.

//فراخوانی Model
use App\Category;


//کنترلر show
public function show(Category $dasteha)
    {
         
    }

حالا پارامتر روت رو تغییر میدم

 

Route::get('categories/{dasteha}', 'CategoryController@show')->name('show');

موفق تر باشید!

Share this post


Link to post
Share on other sites
در در ۱۳۹۸/۱۲/۱۳ در 11:51، digiman گفته است :

در ویدئو 24، استاد اصطلاح این موضوع رو بکار برده :

route model binding 

برای توضیح بیشتر به داکیومنت لاراول همین مبحث مراجعه شود.

تعریف

Route Model Binding

هنگام تزریق Model ID به یک route یا controller action ، می توانید مدلی را برای مطابقت با آن شناسه درخواست کنید. اتصال مسیر Laravel راهی مناسب برای تزریق خودکار نمونه های مدل به طور مستقیم به مسیرهای شما فراهم می کند. به عنوان مثال ، به جای تزریق شناسه کاربر ، می توانید کل نمونه مدل User را که مطابق با شناسه داده شده است تزریق کنید.

Share this post


Link to post
Share on other sites

وارد این گفتگو شوید

میتوانید پیام خود را ارسال کنید و بعد ثبت نام نمایید. در صورتی که حساب کاربری دارید, هم اکنون وارد شوید و در این گفتگو شرکت کنید.

مهمان
پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  Only 75 emoji are allowed.

×   لینک شما به صورت اتوماتیک جایگذاری شد.   نمایش به عنوان یک لینک به جای

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • جدید...