ساخت کنترلر و مدل Posts

Post Controller

2 100

ساخت کنترلر Posts

تا این قسمت تمام سیستم احراز هویت را کامل کرده ایم و می توانیم به راحتی کاربران خود را ثبت نام را وارد سیستم کنیم. حالا وقت آن رسیده است که به سراغ عملیات پست گذاری برویم. بنابراین اولین کاری که باید انجام دهیم، ساخت فایلی به نام Posts.php در پوشه ی controller است.

درون این فایل کلاس Posts را می نویسیم و با آن کلاس Controller را extend می کنیم تا به کدهایش دسترسی داشته باشیم. سپس یک تابع index می سازیم که داخلش یک view را بارگذاری کنیم:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

فعلا data ما یک آرایه ی خالی است تا بعدا آن را تکمیل کنیم.

سپس به پوشه ی views رفته و در آنجا پوشه ای جدید به نام posts ایجاد کنید. درون این پوشه یک فایل به نام index.php نیز ایجاد کنید و داخل آن header و footer را بارگذاری کنید (مانند view های جلسات قبلی):

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

کلاس fa مربوط به کتابخانه ی font awesome است. این کد HTML تنها کاری که می کند ایجاد یک ردیف ساده است که در سمت چپ آن عبارت Posts و در سمت راست دکمه ی Add Post نمایش داده می شود.

برای نمایش پست ها باید آن ها را از پایگاه داده fetch کنیم اما فعلا به صورت دستی و در محیط PHPMyAdmin چند پست را ایجاد می کنیم؛ به جدول posts بروید و یک پست دلخواه ایجاد کنید. در قسمت user_id باید id کاربری را قرار دهید که در جدول users ایجاد کرده ایم، اگر در این قسمت کاربری ندارید به صورت دستی یک کاربر نیز ایجاد کنید.

قبل از fetch کردن پست ها باید مسئله ی مهمی را حل کنیم: کاربران باید فقط و فقط هنگامی صفحه ی گذاشتن پست را ببینند که login شده باشند در غیر این صورت نباید اجازه ی گذاشتن پست به کسی داده شود. بنابراین باید فایل ها را کمی تغییر دهیم. وارد فایل Users.php از پوشه ی controllers شوید و در تابع createUserSession صفحه ی redirect را از pages/index به posts تغییر دهید:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

نکته: ما قصد داریم که هیچ کاربری اجازه ی مشاهده ی پست ها و پست گذاری نداشته باشد مگر اینکه login شده باشد، به همین دلیل تابع مربوطه را در خود constructor تعریف کرده ایم. اگر شما می خواهید کاربران مهمان بتوانند پست ها را مشاهده کنند اما نتوانند پست بگذارند، نباید این کار را در constructor انجام دهید بلکه لازم است فقط از توابع مربوط به پست گذاری محافظت کنید.

تابع isLoggedIn را در جلسات قبلی تعریف کردیم. به فایل Users.php (پوشه ی controller) بروید و کدهای مربوط به تابع isLoggedIn را cut کنید. سپس به فایل session_helper.php رفته و کدها را در آنجا قرار دهید. این کار به نظم پروژه ی ما کمک می کند ولی کاملا دلخواه است. (یادتان نرود که کلیدواژه ی public را حذف کنید چرا که در این فایل کلاسی نداریم):

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

ساخت Model برای دریافت پست ها

در پوشه ی models یک فایل جدید به نام post.php بسازید. در این فایل کلاسی به نام Post ایجاد کرده و یک متغیر خصوصی به نام db می سازیم تا با استفاده از آن به پایگاه داده دسترسی داشته باشیم:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

با این کد پست ها را دریافت کرده و داخل متغیر data گذاشته ایم.

حالا فایل index.php را از پوشه ی views>posts باز کنید. از آنجایی که پست های ما قطعا بیشتر از یکی خواهند بود و آرایه هستند باید با یک حلقه در آن ها گردش کنیم:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

باید به جای USERNAME در کد بالا نام کاربر را نمایش دهیم اما اگر یادتان باشد نام کاربر را از پایگاه داده نگرفتیم. کوئری SQL ما به این شکل بود:

SELECT * FROM POSTS

نام کاربر داخل جدول Posts نیست بنابراین باید یک کوئری Join ایجاد کنیم. به فایل Post.php (پوشه ی model) بروید تا کوئری خود را ویرایش کنیم:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

این کوئری جدول های posts و users را با هم join می کند و ستون user_id موجود در جدول posts را برابر با ستون id از جدول users قرار می دهد. اگر با زبان SQL آشنایی ندارید به دوره ی آموزشی زبان SQL ما سری بزنید.

حالا به فایل index.php از پوشه ی views>posts برمی گردیم و کدهایمان را به شکل زیر تکمیل می کنیم:

مشاهده این قسمت تنها برای افرادی که اشتراک جادویی داشته باشند، امکان‌پذیر است. با خرید اشتراک، به همه مطالب جادویی روکسوپلاس دسترسی داشته باشید.

امیدوارم از این قسمت لذت برده باشید.

ترتیبی که روکسو برای یادگیری مطالب سری آموزش ساخت شبکه اجتماعی به شما توصیه می‌کند:
2 نظر
  1. محمد
    0

    سلام خسته نباشید و ممنون بابت آموزش رایگان و بسیار جذابتون فقط لطف کنید هر چه سریعتر ادامه آموزش رو قرار بدید سپاس

    1. امیر زوارمی
      0

      سلام دوست عزیز،
      قسمت های جدید منتشر شدند.

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.