顧名思義,控制器控制應用程式。它就像模型和視圖之間的橋樑。控制器處理請求數據,確保調用正確的模型並呈現正確的回應或視圖。
控制器類別中的方法稱為actions。每個控制器都遵循命名約定。 CakePHP 控制器 類別名稱以複數形式,駝峰式命名,並以 CakePHP 控制器 結尾 — PostsCakePHP 控制器.
應用程式控制器
AppConttroller 類別是所有應用程式控制器的父類別。該類別擴展了 CakePHP 的 CakePHP 控制器 類別。 AppCakePHP 控制器 定義於 src/CakePHP 控制器/AppCakePHP 控制器.php。 該檔案包含以下程式碼。
<?php declare(strict_types=1); namespace App\CakePHP 控制器; use Cake\CakePHP 控制器\CakePHP 控制器; class AppCakePHP 控制器 extends CakePHP 控制器 { public function initialize(): void { parent::initialize(); $this->loadComponent('RequestHandler'); $this->loadComponent('Flash'); } }
AppCakePHP 控制器 可用於載入將在應用程式的每個控制器中使用的元件。在 AppCakePHP 控制器 中建立的屬性和方法將在擴展它的所有控制器中可用。 initialize() 方法會在控制器建構子的末端呼叫來載入元件。
控制器操作
控制器類別中的方法稱為操作。這些操作負責為發出請求的瀏覽器/使用者發送適當的回應。視圖是透過操作名稱呈現的,即控制器中的方法名稱。
範例
class RecipesCakePHP 控制器 extends AppCakePHP 控制器 { public function view($id) { // Action logic goes here. } public function share($customerId, $recipeId) { // Action logic goes here. } public function search($query) { // Action logic goes here. } }
如您在上面的範例中所看到的,RecipesCakePHP 控制器 有 3 個操作 - 查看、共享和 搜尋。
重定向
為了將使用者重新導向到同一控制器的另一個動作,我們可以使用 setAction() 方法。以下是 setAction() 方法的語法。
Cake\CakePHP 控制器\CakePHP 控制器::setAction($action, $args...)
以下程式碼會將使用者重新導向至相同控制器的索引操作。
$this->setAction('index');
下面的例子展示了上述方法的用法。
範例
在 config/routes.php 檔案中進行更改,如下列程式所示。
config/routes.php
<?php use Cake\Http\Middleware\CsrfProtectionMiddleware; use Cake\Routing\Route\DashedRoute; use Cake\Routing\RouteBuilder; $routes->setRouteClass(DashedRoute::class); $routes->scope('/', function (RouteBuilder $builder) { // Register scoped middleware for in scopes. $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([ 'httpOnly' => true, ])); $builder->applyMiddleware('csrf'); $builder->connect('/redirect-controller',['controller'=>'CakePHP 控制器s','action'=>'action1']); $builder->connect('/redirect-controller2',['controller'=>'CakePHP 控制器s','action'=>'action2']); $builder->fallbacks(); });
在 src/CakePHP 控制器/CakePHP 控制器sCakePHP 控制器.php 建立一個 CakePHP 控制器sCakePHP 控制器.php 檔案。將以下程式碼複製到控制器檔案中。
src/CakePHP 控制器/CakePHP 控制器sCakePHP 控制器.php
<?php declare(strict_types=1); namespace App\CakePHP 控制器; use Cake\Core\Configure; use Cake\Http\Exception\ForbiddenException; use Cake\Http\Exception\NotFoundException; use Cake\Http\Response; use Cake\View\Exception\MissingTemplateException; class CakePHP 控制器sCakePHP 控制器 extends AppCakePHP 控制器 { public function action1() { } public function action2(){ echo "redirecting from action2"; $this->setAction('action1'); } }
在src/Template處建立目錄CakePHP 控制器s,並在該目錄下建立一個名為action1.php的View檔案。將以下程式碼複製到該文件中。
src/Template/CakePHP 控制器s/action1.php
<h1 id="This-is-an-example-of-how-to-redirect-within-controller">This is an example of how to redirect within controller.</h1>
透過造訪以下 URL 來執行上述範例。
http://localhost/cakephp4/redirect-controller
輸出
執行後,您將收到以下輸出。

現在,請造訪以下 URL:http://localhost/cakephp4/redirect-controller2
上面的 URL 將為您提供以下輸出。

載入模型
在 CakePHP 中,可以使用 loadModel() 方法載入模型。以下是 loadModel() 方法的語法 -
Cake\CakePHP 控制器\CakePHP 控制器::loadModel(string $modelClass, string $type)
上述函數有兩個參數,如下 -
第一個參數是模型類別的名稱。
第二個參數是要載入的儲存庫的型別。
範例
如果你想在控制器中載入 Articles 模型,那麼可以透過在控制器的操作中寫入以下行來載入它。
$this->loadModel('Articles');
以上是CakePHP 控制器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Dreamweaver Mac版
視覺化網頁開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),