<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 驗證模型 ## 驗證數據完整性 `Phalcon\Mvc\Model` 提供了幾個事件來驗證數據和實現業務規則。特殊`驗證` 事件允許我們在記錄上調用內置驗證器。Phalcon公開了一些可在此驗證階段使用的內置驗證器。 以下示例顯示了如何使用它: ```php <?php namespace Store\Toys; use Phalcon\Mvc\Model; use Phalcon\Validation; use Phalcon\Validation\Validator\Uniqueness; use Phalcon\Validation\Validator\InclusionIn; class Robots extends Model { public function validation() { $validator = new Validation(); $validator->add( 'type', new InclusionIn( [ 'domain' => [ 'Mechanical', 'Virtual', ] ] ) ); $validator->add( 'name', new Uniqueness( [ 'message' => 'The robot name must be unique', ] ) ); return $this->validate($validator); } } ``` 上面的示例使用內置驗證器“InclusionIn”執行驗證。它檢查域列表中字段`type`的值。如果該值未包含在方法中,則驗證器將失敗并返回false。 >[warning] 有關驗證器的更多信息,請參閱驗證文檔 創建驗證器的想法是使它們在多個模型之間可重用。驗證器也可以像下面這樣簡單: ```php <?php namespace Store\Toys; use Phalcon\Mvc\Model; use Phalcon\Mvc\Model\Message; class Robots extends Model { public function validation() { if ($this->type === 'Old') { $message = new Message( 'Sorry, old robots are not allowed anymore', 'type', 'MyType' ); $this->appendMessage($message); return false; } return true; } } ``` ## 驗證消息 `Phalcon\Mvc\Model` 有一個消息傳遞子系統,它提供了一種靈活的方式來輸出或存儲插入/更新過程中生成的驗證消息。 每條消息都是`Phalcon\Mvc\Model\Message`的一個實例,生成的消息集可以使用`getMessages()`方法檢索。每條消息都提供擴展信息,例如生成消息的字段名稱或消息類型: ```php <?php if ($robot->save() === false) { $messages = $robot->getMessages(); foreach ($messages as $message) { echo 'Message: ', $message->getMessage(); echo 'Field: ', $message->getField(); echo 'Type: ', $message->getType(); } } ``` `Phalcon\Mvc\Model` 可以生成以下類型的驗證消息: | 類型 | 描述 | | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `PresenceOf` | 當數據庫上具有非null屬性的字段嘗試插入/更新空值時生成 | | `ConstraintViolation` | 當虛擬外鍵的字段部分嘗試插入/更新引用模型中不存在的值時生成 | | `InvalidValue` | 驗證程序因無效值而失敗時生成 | | `InvalidCreateAttempt` | 嘗試創建記錄但已存在時生成 | | `InvalidUpdateAttempt` | 嘗試更新記錄但不存在時生成 | 可以在模型中重寫`getMessages()`方法,以替換/轉換ORM自動生成的默認消息: ```php <?php namespace Store\Toys; use Phalcon\Mvc\Model; class Robots extends Model { public function getMessages() { $messages = []; foreach (parent::getMessages() as $message) { switch ($message->getType()) { case 'InvalidCreateAttempt': $messages[] = 'The record cannot be created because it already exists'; break; case 'InvalidUpdateAttempt': $messages[] = "The record cannot be updated because it doesn't exist"; break; case 'PresenceOf': $messages[] = 'The field ' . $message->getField() . ' is mandatory'; break; } } return $messages; } } ``` ## 驗證失敗的事件 當數據驗證過程發現任何不一致時,可以使用另一種類型的事件: | 操作 | 名稱 | 說明 | | ------------------------ | ------------------- | ---------------------------------------------------------------------- | | Insert or Update | `notSaved` | `INSERT` 或 `UPDATE` 操作因任何原因失敗時觸發 | | Insert, Delete or Update | `onValidationFails` | 任何數據操作操作失敗時觸發 |
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看