iT邦幫忙

0

【Codeigniter4 不廢話】第三課: 建立controllers&Routes

  • 分享至 

  • xImage
  •  

1.建立controllers
該文件必須命名為 「Blog.php」,大寫 「H」。

<?php
namespace App\Controllers;
class Blog extends BaseController
{
    public function index()
    {
        echo 'Hello World!';
    }
}

2.建立Routes
app\Config\Routes.php

$routes->get('路徑', '控制器::方法');
$routes->get('/blog', 'blog::index');

/blog 是訪問的 URI
這意味著當使用者輸入 http://localhost/blog 時,此路由會被觸發。
(只能小寫開頭)

Blog::index 指向 Blog 控制器中的 index 方法。
控制器檔案應位於 app/Controllers/ 目錄中,文件名為 Blog.php。
(大小寫沒差)

3.呼叫blog控制器的其他方法(function)有兩種方法:
/blog/<方法名>

  • 手動設置(更精確控制,適合大型專案)
    $routes->get('/blog/A', 'Blog::A');

  • 使用通配符匹配多個方法(function)
    $routes->get('/blog/(:any)', 'Blog::$1');


4.夾帶參數

$routes->get('/blog/(:any)/(:num)', 'Blog::$1/$2');

/blog/<方法名>/<數字>
Blog:指向 Blog 控制器。
$1:捕獲的第一部分((:any)),用作方法名稱。
$2:捕獲的第二部分((:num)),用作傳遞給方法的參數。

$routes->get('/blog/(:any)', 'Blog::$1');
不過實際上這個也可以抓到一個參數
雖然看似參數被方法占用了

    public function bbb($id)
    {
        echo $id;
    }

blog/bbb/123


// public/            ->Home的index
$routes->get('/', 'Home::index');

// public/blog            ->blog的index

$routes->get('/blog', 'Blog::index');
// public/blog/(blog的任意方法)            ->blog的blog的任意方法裡面
$routes->get('/blog/(:any)', 'Blog::$1');  // 更具體的 /blog 路由放在前面




// public/(home的任意方法)   ->home的blog的任意方法裡面
$routes->get('/(:any)', 'Home::$1');

動態路由
您可以在路由中使用動態部分來捕獲 URL 中的變量。這些動態部分可以是:
(:any):匹配任何字符(包括 /)
(:segment):匹配單個段(即由 / 分隔的部分,並且不能匹配 /)
(:num):只匹配數字
(:alpha):只匹配字母
(:alphanum):匹配字母和數字


/Config/app.php*
public string $permittedURIChars = 'a-z 0-9~%.:_-一-龥()';
這樣,您就能夠在 URL 中傳遞中文參數,並且 CodeIgniter 路由能夠正確處理它。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言