الجزء ال5: أنشاء موقع للأخبار بأستخدام Laravel
من بداية الجزء الأول الى الرابع
كانت أجزاء تمهيدية لتعلم Laravel, في هذا الجزء سنتعلم أشياء أضافية للأجزاء
السابقة وسنطبق ذلك من خلال انشاء موقع للأخبار, معلومات الأخبار سندرجها بطريقة
مباشرة بدون استخدام قواعد البيانات في هذا الجزء, اي لن نستخدم جزء الModel فقط الController وال View والroutes
كما تعلمنا لكل جزء له وظيفته
الخاصة,
لأنشاء الController الخاص
بالأخبار عن طريق الأمر التالي:
C:\Users\Administrator\Desktop\laravel_apps\first_app>php artisan make:controller NewsController
--plain
نقوم بتشغيل الartisan عن طريق
الأمر التالي:
C:\Users\Administrator\Desktop\laravel_apps\first_app>php artisan serve
Laravel development server started on
http://localhost:8000/
داخل ملف الNewsController قمتٌ بأنشاء دالتين, دالة لأستدعاء كافة الأخبار وسميتُ تلك
الدالة بgetNews(), ودالة اخرى الرئيسية لهذا الملف وهي الindex() حيث تعمل
على استرجاع جميع الأخبار من دالة الgetNews() , وتمرير تلك القيم للview التي تسمى index في مجلد
اسمه news , والكود لكلا الدالتين كالأتي:
public function
index()
{
$news=$this->getNews();
return
view('news.index',compact('news'));
}
public function getNews()
{
$news = ['Free Session for Learning
Laravel 5','Free Session for Learning SQLServer 2012','Learning
Joomla!','Learning Blogger'];
return $news;
}
وبعدها سأنشئ دالة لأظهار خبر معين
وسأقوم بتسميتها بshow() , طبعاً هذا الدالة ستظهر الخبر حسب الرقم
التعريفي للخبر اي يجب تزويد قيمة المعرف لذلك الخبر لهذه الدالة لتصبح هكذا show($id), وبعدها
ستستدعي دالة getNews() مصفوفة الأخبار ستسترجع وسنختار
خبر معين عن طريق معرفهِ, بعد استرجاع قيمة الخبر حسب معرفهِ سنمرر الخبر للView الخاصة بعرض
خبر معين, وسننشئ view ونسميه show في مجلد ال,news كود الدالة كالأتي:
public function
show($id)
{
$news = $this->getNews()[$id];
return
views('news.show',compact('news'));
}
انتهى عملنا مع الNewsController J
بقي لنا جزئين جزء الviews والأخر الroutes!!
في ملف الroutes.php:
عندما يكتب المستخدم /news في المتصفح فأن ذلك يعني وجهني الى جميع الأخبار اي الى NewsController@index ومن هنالك ستسترجع الواجهة view الخاصة بعرض
جميع الأخبار news.index:
لكتابة التوجيه يوجد ثلاث طرق:
Routes::get();
$router->get();
get();
لايوجد خطأ بأستخدام اي من الثلاث
لكن في هذا الجزء للسهولة سأستخدم دالة الget():
get('news','NewsController@index');
ملاحظة الأخبار التي ستسترجع ستوضع
داخل الAnchor tag, وتظهر فقط عنوان الخبر , عند الضغط على
الخبر سنتوجه للخبر نفسه طبعاً لكل خبر له معرفهُ الخاص اي التوجيه يكون بالشكل
التالي: /news/{id}
get('news/{id}','NewsController@show');
انتهى عملنا مع الroutes.php J
الجزء الأخير عرض البيانات
للمستخدم عن طريق الviews:
اول واجهة ستكون لعرض كافة الأخبار
واتفقنا على تسميتها بindex , وسوف تكون جميع الواجهات الأخبار موضوعة
في مجلد اسمه news لغرض الترتيب!
ملاحظة: عند انشاء view لا تنسى ان
تكتب .blade.php , فعند انشاء الindex view ستكون بهذا
الشكل :
news/index.blade.php
في هذا الview , ستمرر له
كافة الأخبار من الNewsController عن طريق دالة الindex بمصفوفة
اسمها $news
اي اننا سنحتاج الى عمل حلقة تكرار
لعرض تلك الأخبار, كود الindex
view سيكون
بالشكل التالي:
@extends('layout')
@section('content')
<h1>News</h1>
<ul>
@foreach($news
as $k=>$v)
<li><a
href="/news/{{ $k }}">{{ $v }}</a></li>
@endforeach
</ul>
@stop
ملاحظة: قمت بأستخدام Layout
view template وبعدها
ادرجتُ الأخبار ضمن قاطع في الLayout في حلقة تكرار, وايضاً لكل خبر له رابط مع رقمهُ
التعريفي عن طريق $key=>$value حيث ان ال$k تعني الرقم
التعريفي للقيمة و ال$v تعني
القيمة نفسها للخبر.
والview الثانية ستكون عن أظهار خبر معين مع محتواه,
وتسمية تلك الواجهة ستكون: show.blade.php
وستوضع ضمن مجلد الnews:
news/show.blade.php
محتوى هذا الview بسيط جداً
لهذا الجزء فقط سأظهر عنوان الخبر:
@extends('layout')
@section('content')
<h1>{{
$news }}</h1>
<p>Content
of the news, I'll add later on......</p>
@stop
درس اليوم انتهى J
الناتج لدرس هذا اليوم عند زيارة
الموقع وكتابة /news في المتصفح ستظهر لنا هذه الصفحة:
وعند الضغط على احد العنوان ستظهر
لنا هذه الصفحة:
Comments
Post a Comment