آموزش ساخت یک وبلاگ ساده با لاراول 5 [قسمت سوم]

ترجمه و تالیف : حسام موسوی
تاریخ انتشار : 13 خرداد 98
خواندن در 2 دقیقه
دسته بندی ها : لاراول , آموزشی

موضوعاتی که تا الان گفته شد :

  • نصب لاراول 
  • Migration ها
  • ساخت مدل ها با استفاده از Eloquent ORM
  • Database Seeding
  • Controllers

 آموزش ساخت یک وبلاگ ساده با لاراول 5 [قسمت سوم]

امروز در این قسمت از آموزش ساخت وبلاگ با لاراول 5 من قصد دارم در مورد Routing ها و نحوه کار باهاشون با شما صحبت کنم و بهتون یاد بدم که چطوری با Route ها کار کنید . خب بریم سراغ آموزش .  

  • Routing در لاراول 

مسیریابی ، نقش اساسی در عملکرد هسته هر فریم ورک MVC ایفا میکنه . در حقیقت Route یه نگاشت بین موتور requests و response اگه بخوایم خیلی ساده تعریفش کنیم آدرس های URL ی که شما در مرورگرتون وارد میکنید با route مدیریت میشه و نقاط ورودی برنامه اتونو تعریف میکنه . داشتن یه routing انعطاف پذیر می تونه به شما کمک کنه تا کنترل بهتر و کاربردی تر رو برنامه اتون داشته باشین .

لاراول دارای یک مسیریابی قدرتمنده ، که بر اساس مسیریابی Symfony نوشته شده که کار باهاش خیلی خیلی راحته همینطور رابط کاربری راحت و قابلیت های زیادی داره که برنامه نویسی با اونو براتون لذت بخش تر میکنه . 

  • تعریف Route ها 

در لاراول Route های برنامه ما در مسیر app\http\routes.php تعریف میشن . یک مثال ساده از فایل routes.php :

<?php
 
// will be used to handle GET requests.
Route::get('index',function()
{
    echo 'this is index page';
});
 
Route::get('login',function()
{
    echo 'GET login requests will be hndled here.';
});
 
// will be used to handle POST requests.
Route::post('login', function() 
{
    echo 'POST login requests will be handled here.';
});

ما همچنین میتونیم از متد کنترل ها استفاده کنیم مثل زیر :

<?php
Route::get('users', 'UsersController@getIndex');

در کد بالا زمانی که ما درخواستی بصورت /users داشته باشیم این درخواست بوسیله route به متد getIndex از کنترل UserController متصل میشه و داده ها رو به نسبت کدی که در getIndex قرار داره به کاربر نشون میده ما همچنین میتونیم داده ها رو بطور مستقیم بوسیله افعال خود http حذف یا اضافه کنیم با استفاده از Route::put و Route::delete

پارامتر ها در Route 

<?php
 
// parameter {id} will be passed to the closure.
Route::any('post/{id}',function($id)
{
    echo "post with id: $id";
});

 
// A model with given post id will be passed to closure for any HTTP request.
Route::any('post/{post}',function($post)
{
    echo "post with id: $post->id";
});

نکته :  filter که در نسخه 4 لاراول در route ها مورد استفاده قرار میگرفت در نسخه 5 جایی خودشو به Middleware داده که تو آموزش های بعد بطور کامل اونو توضیح میدم .

ما می تونیم در هر route با تعریف کلید در آرایه ای که در زیر میبینید یک نام روتر دوم داشته باشیم . 

<?php
 
Route::get('admin',['as'=>'admin.home','middleware' => 'auth',function()
{
    return 'is already called';
}]);
 
//another example using controller action.
Route::get('/post/list',['as' => 'post.list','uses' => 'PostController@listPost']);

در view ها هم ما میتویم با استفاده از route() مسیرهای موجود رو به لینک قابل کلیک تبدیل کنیم بصورت زیر 

<?php
route('post.list');

شما میتویند برای توضیحات کامل تر در مورد route ها به اسناد خود لاراول مراجعه کنید یا منتظر بمونید تا ما بطور کامل در پست های دیگه route ها رو توضیح بدیم . البته شما میتونید از فیلم ویدئویی که در این مورد در سایت وجود داره هم استفاده کنید . 

  • ساخت Route های مورد نیاز برای وبلاگ

در زیر مسیر ههای که برای برنامه اومون استفاده میکنیم رو میتونید ببینید :

<?php
//file: app/http/routes.php
 Route::controllers([
	'auth' => 'Auth\AuthController',
	'password' => 'Auth\PasswordController',
]);

/* User routes */
get('/post/{post}/show', ['as' => 'post.show', 'uses' => 'PostController@showPost']);
post('/post/{post}/comment', ['as' => 'comment.new', 'uses' => 'CommentController@newComment']);

/* Admin routes */
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function () {
    /*get routes*/
    get('dash-board', function () {
        $username = Auth::user()->name;
        return view('dash')->with('content', "Hi $username, Welcome to Dashboard!")
            ->withUsername('username',$username)
            ->withTitle('title','DashBoard');
    });
    get('/post/list', ['as' => 'post.list', 'uses' => 'PostController@listPost']);
    get('/post/new', ['as' => 'post.new', 'uses' => 'PostController@newPost']);
    get('/post/{post}/edit', ['as' => 'post.edit', 'uses' => 'PostController@editPost']);
    get('/post/{post}/delete', ['as' => 'post.delete', 'uses' => 'PostController@deletePost']);
    get('/comment/list', ['as' => 'comment.list', 'uses' => 'CommentController@listComment']);
    get('/comment/{comment}/show', ['as' => 'comment.show', 'uses' => 'CommentController@showComment']);
    get('/comment/{comment}/delete', ['as' => 'comment.delete', 'uses' => 'CommentController@deleteComment']);

    /*post routes*/
    post('/post/save', ['as' => 'post.save', 'uses' => 'PostController@savePost']);
    post('/post/{post}/update', ['as' => 'post.update', 'uses' => 'PostController@updatePost']);
    post('/comment/{comment}/update', ['as' => 'comment.update', 'uses' => 'CommentController@updateComment']);

});

/* Home routes */
Route::controller('/', 'BlogController');

/* View Composer */
View::composer('sidebar', function ($view) {
    $view->recentPosts = App\post::orderBy('id', 'desc')->take(5)->get();
});

 در کد بالا برای اعتبار سنجی مدیریت ما از کنترل auth استفاده میکنیم و همینطور در route های بعدی یعنی post.show و comment.new ما به مخاطب ها اجازه میدیم تا پست ها رو در صفحات تکی (single page) ببینن و اگه خواستن نظر خودشون در مورد اون پست رو ارسال کنن . در route بعد ما یه route:group میسازیم که تمام مسیر های مربوط به مدیریت در اون قرار میگیره و یک پیشوند admin هم برای route های که در این گروه قرار دارن تعریف میکنیم .تا هر route که درخواست شد قبلش admin بیاد برای مثال زمانی که مسیر post.edit فراخوانی بشه به url به این صورت بازگردانی میشه (http://localhost/admin/post/12/edit) 

خب این بود از قسمت سوم ساخت وبلاگ با لاراول 5 که مسیریابی رو برای این وبلاگمون آماده کردیم . امیدوارم مورد استفادتون قرار گرفته باشه . 

نظرات ، پیشنهادات ، انتقادات خودتونو لطفا در بخش نظرات به ما بگین . با تشکر 

 

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

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

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

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید