17
تشکر

تولید URLها در لاراول

Laravel

Laravel

برای ساختن لینک ها در اپلیکیشن هایی که با لاراول ساخته میشود میتوان آنها را به صورت دستی ایجاد کرد که توصیه نمی شود اما لاراول دستورات کمکی زیادی را برای این منظور در اختیار ما قرار می دهد.

در ادامه مطلب همراه ما باشید…

Routes URL

URL::action

این متد دو پارامتر می پذیرد که پارمتر اول نام کنترلر و اکشن مورد نظر و پارامتر دوم یک آرایه اختیاری از پارامتر هاست که به انتهای URL افزوده می شود . مثال زیر را ملاحظه کنید:

class BlogUsers extends BaseController
{
  public function AddUser(){
  
  }
}

Route::get('users/add','BlogUsersController@AddUser');
Route::get('users/test',function(){
  return URL::action('BlogUsersController@AddUser', array());
});

در این مثال ، ما یک کنترلر با نام BlogUsers و با متد AddUser ایجاد کردیم. سپس مسیر users/add را به آن کنترلر و اکشن پیوست کردیم . همچنین مسیر users/test را برای تست ایجاد کردیم که مثالی از متد URL::action را برمیگرداند. بنابراین زمانیکه که شما به آدرس users/test بروید، خروجی زیرا را مشاهده می کنید:

http://<laravel dir>/public/users/add

همینطور می تونید یکسری پارامترهای اضافی در قالب یک آرایه به آن بیافزایید . که این پارامتر ها به انتهای URL اضافه خواهد شد . اجازه دهید این را در عمل ببینیم:

Route::get('users/test',function(){
  return URL::action('BlogUsersController@AddUser', array(
    'foo' => 8,
    'bar'=>9
  ));
});

زمانیکه آدرس users/test را باز کنید ، لاراول آدرسی شامل پارامترهایی مانند زیر را برمی گرداند :

http://localhost/laravel/public/users/add?foo=8&bar=9

URL::current

این متد آدرس جاری را بر می گرداند . مثال زیر را ملاحظه کنید:

Route::get('test/route',function(){
  return URL::current();
});

//outputs
//http://<laravel dir>/public/test/route

URL::full

تفاوت این متد با URL::current در این است که آدرس جاری را به همراه پارامترهای GET بر می گرداند.

Route::get('test/route',function(){
  return URL::full();
});

//visit http://<laravel dir>/public/test/route?foo=1&bar=3

//outputs
//http://<laravel dir>/public/test/route?bar=3&foo=1

URL::previous

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

URL::to

آدرسی که به عنوان پارامتر برای آن مشخص شده را بر می گرداند. بایستی دقت کنید که این متد آدرس را بررسی نمی کند که آیا Route وجود دارد یا خیر.

Route::get('test/route',function(){
  return URL::to('another/route');
});

// outputs
//http://<laravel dir>/public/another/route

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

Route::get('test/route',function(){
  return URL::to('another/route', array('foo','2','bar','8'));
});

// outputs
//http://<laravel dir>/public/another/route/foo/2/bar/8

URL::secure

آدرسی بر می گرداند که از پروتکل HTTPS استفاده می کند. 2 پارامتر می پذیرد، پارامتر اول که طبیعتا Route است و پارامتر دوم که یک آرایه اختیاری از پارامترهاست که به انتهای URL اضافه میشود.

Route::get('test/route',function(){
  return URL::secure('another/route', array());
});

// outputs
//https://<laravel dir>/public/another/route

شایان ذکر است که متد URL::to هم می تواند آدرس هایی با پروتکل HTTPS ایجاد کند. بدین منظور پارامتر سوم آنرا true قرار دهید.

Route::get('test/route',function(){
  return URL::to('another/route', array(), true);
});

// outputs
//https://<laravel dir>/public/another/route

URL::route

با استفاده از نام مستعاری که برای Routeها گذاشتیم، URL را بر می گرداند. دو پارامتر می پذیرد، پارامتر اول رشته ای که بیانگر نام مستعار مسیر یا Route Nickname است و پارامتر دوم یک آرایه اختیاری از پارامترها که به انتهای URL افزوده می شود. اجازه بدید تا یک مثال عملی ببینیم:

Route::get('test/route',array( 'as' => 'test_route', function(){
   return;
}));
Route::get('another/route',function(){
  return URL::route('test_route', array());
});

//visit
//http://<laravel dir>/public/another/route

// outputs
//http://<laravel dir>/public/test/route

Assets URLs

URLهایی که برای فراخوانی فایل های asset لاراول مثل فایلهای css ، javascript و images هستند نیاز به URL مطلق دارند پس اجازه بدید تا یک نگاهی به بعضی از متدهایی که برای دستیابی به Assets URLs هستند بیندازیم.

URL::asset

یک Absolute URL به پوشه asset بر می گرداند. دو پارامتر می پذیرد که اولین پارامتر ، آدرس نسبی به asset از ریشه لاراول و دومین پارامتر یک مقدار Boolean که اشاره می کند به Secure بودن یا نبودن URL.

Route::get('asset', function(){
  return URL::asset('/app/public/assets/css/main.css');
});

//visit
//http://<laravel dir>/public/asset

//outputs
//http://<laravel dir>/public/app/public/assets/css/main.css

Route::get('secured_asset', function(){
  return URL::asset('/app/public/assets/css/main.css',true);
});

//visit
//http://<laravel dir>/public/secured_asset

//outputs
//https://<laravel dir>/public/app/public/assets/css/main.css

URLs Generators Shortcuts

همه متدهایی که پیش از این راجع به آنها بحث شد را قادرید که در View هم استفاده کنید. البته بهتر است از راه های میانبر اینکار استفاده کنید تا کدها کمتر شوند.

url

میانبری برای متد URL::to است. مثال زیر را ملاحظه کنید:

//app/routes.php
Route::get('another/route', function(){
  return View::make('test');
});

//app/views/test.blade.php
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>Laravel</title>
  </head>
  <body>
    <div class="welcome">
      <p>{{ url('another/route') }}</p>
    </div>
  </body>
</html>

زمانی که آدرس /public/another/route را باز کنید، بایستی خروجی زیر را دریافت کنید:

http://<laravel dir>/public/another/route

secure_url

ایمن شده Route مورد نظر را برمیگرداند. همان پارامترهای URL::secure را می پذیرد. مثال:

<div class="welcome">
  <p>{{secure_url('another/route')}}</p>
</div>

route

میانبری برای متد URL::route می باشد . نام مستعار Route را به عنوان پارامتر می پذیرد و URL را برمی گرداند.

<div class="welcome">
  <p>{{route('route_nickname')}}</p>
</div>

action

میانبری برای متد URL::action می باشد. آدرسی به کنترلر و اکشن، تولید می کند.

<div class="welcome">
  <p>{{action('HomeController@getHello')}}</p>
</div>

asset

میانبری به متد URL::asset است که همان پارامترها را می پذیرد. به نمونه زیر نگاهی بیاندازیم:

<div class="welcome">
  <p>{{asset('/app/public/assets/css/main.css')}}</p>
</div>

secure_asset

مشابه asset عمل میکند با این تفاوت که URL ایمن را برمیگرداند.
در ضمن شما می توانید از تابع asset هم برای برگرداندن URL ایمن با true کردن پارامتر دوم استفاده کنید.

<div class="welcome">
  <p>{{ secure_asset('/app/public/assets/css/main.css')}}</p>
</div>

<div class="welcome">
  <p>{{asset('/app/public/assets/css/main.css', true)}}</p>
</div>
این مطلب از سری مطالب، آموزش فریم ورک Laravel است
  • ALI می‌گه:

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

  • آروین می‌گه:

    سلام
    آقا آرمان عالی بود.
    امیدوارم شما هم مثل آقای شفیعی مطالب خفنی در اختیار ما بگذارید!
    موفق باشید.

  • محسن شفیعی می‌گه:

    اولین نوشتتو توی آپارنت تبریک میگم آرمان جان.
    انشاالله ادامه دار باشه.


  • نظرات این مطلب بسته است.