請求組件
~~~
$request = \Yii::$app->request;
~~~
get獲取參數,第二個是默認值
~~~
$res = $request->get('id', 111);
~~~
post獲取(關閉csrf)
~~~
$res = $request->post('id', '123');
~~~
判斷請求類型
~~~
$request->isGet
$request->isPost
$request->isAjax
~~~
獲取用戶ip
~~~
$request->userIP
~~~
**基礎示例**
~~~php
class LoginForm extends \yii\base\Model{
public $username = '';
public $password = '';
public function login(){
$user = \app\model\User::findOne(['username' => $this->username]);
if(!$user){
$this->addError('username', '無效的用戶名或密碼');
return false;
}
if($user->password != md5($password)){
$this->addError('username', '無效的用戶名或密碼');
return false;
}
return Yii::$app->user->login($user);
}
}
~~~
這是一個打算用在登錄功能上的表單模型,其中login方法就是登錄的邏輯處理,為了簡單演示我省略了用戶名和密碼長度、類型的校驗之類的詳細處理
然后表單模型通常都讓控制器來調用的,控制器的代碼可以這樣寫:
~~~php
public function actionLogin(){
$form = new LoginForm();
$form->username = Yii::$app->request->post('username');
$form->username = Yii::$app->request->post('password');
if($form->login()){
$errorMessage = current($form->firstErrors)[0];
//成功的結果響應
}else{
//失敗的結果響應
}
}
~~~
**4個基本要點**
使用表單模型要注意下面4個要點:
1. 要繼承[yii\\base\\Model](http://www.yiichina.com/doc/api/2.0/yii-base-model)
* * *
2. 一般都提供public方法作為業務邏輯處理的方法(像上面的login方法)
一個方法處理一個業務請求,可以有多個業務,也就是多個public方法
* * *
3. 業務處理過程中,需要的客戶端輸入參數默認不直接從$\_GET、$\_POST數據獲取,而是訪問自身的屬性(像上面的$username和$password兩個屬性)
而客戶端輸入的參數由控制器從GET、POST里獲取,讓控制器來傳遞給表單模型
這樣就實現了:表單模型不依賴GET、POST數據,降低了依賴,只要能傳來特定參數就能執行業務
也就實現了這個邏輯層可以用在更多場合(比如控制臺、第三方接口、后臺管理前臺用戶、模擬登錄等)
* * *
4. 業務處理過程中,如果對輸入數據校驗失敗,報錯的辦法應該用`$this->addError('自定義錯誤標識', '錯誤消息');`并返回false給控制器
當然也能返回0呀null呀什么的,只要跟控制器協商好什么表示失敗就行了
重要的是,控制器如果要獲取失敗的消息提示,可以通過`$form->firstError[0]`這個代碼獲取,在入門級的文章里不解釋這個東西,知道怎么用就是
- 目錄
- 配置
- 簡介
- 別名
- gii
- 配置項
- 模型
- 簡介
- 增刪改查
- AR和model
- 模型事件
- 場景
- query查詢
- 增刪改
- AR查詢器
- 模型關系定義
- AR模型連表查詢
- fields
- where拼接
- 模塊
- 創建模塊
- 控制器
- 表單
- 跳轉
- 響應
- 驗證器
- Action
- 組件
- url
- 分頁
- 驗證碼
- 緩存
- 文件上傳
- 預啟動組件
- 事件
- 自定義組件
- redis
- 日志
- 行為
- cookie和session
- 基礎知識
- 創建一個類
- 配置一個類
- object基類
- component組件類特性
- phpstorm無法更改php等級
- url地址美化
- 過濾器
- 請求處理
- 請求組件
- 響應組件
- header
- 用戶登錄
- 實現IdentityInterface接口
- 登錄
- 自動檢測登錄
- 獲取用戶信息
- 訪問行為追蹤
- phpstorm+postman斷點調試