Routing یا مسیریابی URLها در فریمورک Yii
برای تغییر route یا مسیرِ پیش فرض برنامه، باید property با نام defaultRoute را پیکربندی کنید.
مرحله 1 - فایل config/web.php را به شیوه زیر تغییر دهید.
<?php
$params = require(__DIR__ . '/params.php');
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'defaultRoute' => 'site/contact',
'components' => [
//other code
?>
مرحله 2 – در مرورگر وب تان آدرس http://localhost:8080/index.php را تایپ کنید. اینجاست که شما صفحه contact را مشاهده خواهید کرد.
برای قرار دادن برنامه خود در حالت تعمیر و نگهداری به صورت موقت، شما باید property با نام yii\web\Application::$catchAll را پیکربندی کنید.
مرحله 3 - تابع زیر را به SiteController اضافه کنید.
public function actionMaintenance() {
echo "<h1>Maintenance</h1>";
}
مرحله 4 - سپس فایل config/web.php را به صورت زیر ویرایش کنید.
<?php
$params = require(__DIR__ . '/params.php');
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'catchAll' => ['site/maintenance'],
'components' => [
//OTHER CODE
مرحله 5 – حال اگر هر URL در برنامه خود تایپ کنید، صفحه ی زیر را مشاهده خواهید کرد.
ایجاد URL
برای ایجاد انواع مختلفی از URL ها می توانید از متد کمکی yii\helpers\Url::to() استفاده کنید. در مثال زیر فرض شده است که فرمت URL پیش فرض مورد استفاده قرار گرفته است.
مرحله 1 - متد actionRoutes() را به SiteController اضافه کنید.
public function actionRoutes() {
return $this->render('routes');
}
این متد به سادگی route های مربوط به view ها را رندر می کند.
مرحله 2 – داخل مسیر views/site directory شوید و یک فایل با نام routes.php با کد زیر ایجاد کنید.
<?php
use yii\helpers\Url;
?>
<h4>
<b>Url::to(['post/index']):</b>
<?php
// creates a URL to a route: /index.php?r = post/index
echo Url::to(['post/index']);
?>
</h4>
<h4>
<b>Url::to(['post/view', 'id' => 100]):</b>
<?php
// creates a URL to a route with parameters: /index.php?r = post/view&id=100
echo Url::to(['post/view', 'id' => 100]);
?>
</h4>
<h4>
<b>Url::to(['post/view', 'id' => 100, '#' => 'content']):</b>
<?php
// creates an anchored URL: /index.php?r = post/view&id=100#content
echo Url::to(['post/view', 'id' => 100, '#' => 'content']);
?>
</h4>
<h4>
<b>Url::to(['post/index'], true):</b>
<?php
// creates an absolute URL: http://www.example.com/index.php?r=post/index
echo Url::to(['post/index'], true);
?>
</h4>
<h4>
<b>Url::to(['post/index'], 'https'):</b>
<?php
// creates an absolute URL using the https scheme: https://www.example.com/index.php?r=post/index
echo Url::to(['post/index'], 'https');
?>
</h4>
مرحله 3 – در مرورگر وب تان آدرس http://localhost:8080/index.php?r=site/routes را تایپ کنید. حال شما می توانید برخی از کاربردهای تابع to() را مشاهده نمایید.
routeی که به yii\helpers\Url::to() پاس داده می شود با توجه به قوانین زیر می تواند به صورت نسبی (relative) یا مطلق (absolute) باشد :
- اگر route یا مسیر خالی باشد، مسیر جاری درخواست شده مورد استفاده قرار می گیرد.
- اگر مسیر دارای "/" باشد، به عنوان یک مسیر نسبی، مربوط به ماژول جاری در نظر گرفته می شود.
- اگر مسیر حاوی هیچ "/" نباشد، به عنوان یک action ID از کنترلر جاری در نظر گرفته می شود.
کلاس کمکی yii\helpers\Url متد های مفید بسیاری ارائه می دهد.
مرحله 4 – route های مربوط به viewها را مطابق با کدهای زیر ویرایش کنید.
<?php
use yii\helpers\Url;
?>
<h4>
<b>Url::home():</b>
<?php
// home page URL: /index.php?r=site/index
echo Url::home();
?>
</h4>
<h4>
<b>Url::base():</b>
<?php
// the base URL, useful if the application is deployed in a sub-folder of the Web root
echo Url::base();
?>
</h4>
<h4>
<b>Url::canonical():</b>
<?php
// the canonical URL of the currently requested URL
// see https://en.wikipedia.org/wiki/Canonical_link_element
echo Url::canonical();
?>
</h4>
<h4>
<b>Url::previous():</b>
<?php
// remember the currently requested URL and retrieve it back in later requests
Url::remember();
echo Url::previous();
?>
</h4>
مرحله 5 - اگر آدرس http://localhost:8080/index.php?r=site/routes را در مرورگر وب تان تایپ کنید، صفحه ی زیر را مشاهده خواهید کرد.
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…