<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 表單(Forms)[](# "永久鏈接至標題") Phalcon中提供了 Phalcon\Forms組件以方便開發者創建和維護應用中的表單。 下面的例子中展示了基本的使用方法: ~~~ <?php use Phalcon\Forms\Form; use Phalcon\Forms\Element\Text; use Phalcon\Forms\Element\Select; $form = new Form(); $form->add(new Text("name")); $form->add(new Text("telephone")); $form->add( new Select( "telephoneType", array( 'H' => 'Home', 'C' => 'Cell' ) ) ); ~~~ 可在表單定義時穿插使用表單元素的字義: ~~~ <h1>Contacts</h1> <form method="post"> <p> <label>Name</label> <?php echo $form->render("name"); ?> </p> <p> <label>Telephone</label> <?php echo $form->render("telephone"); ?> </p> <p> <label>Type</label> <?php echo $form->render("telephoneType"); ?> </p> <p> <input type="submit" value="Save" /> </p> </form> ~~~ 開發者可根據需要渲染HTML組件。 當使用render()函數時, phalcon內部會使用 [*Phalcon\Tag*](#) 生成相應的html項,第二個參數中可以對一些屬性進行設置。 ~~~ <p> <label>Name</label> <?php echo $form->render("name", array('maxlength' => 30, 'placeholder' => 'Type your name')); ?> </p> ~~~ HTML的屬性也可以在創建時指定: ~~~ <?php $form->add( new Text( "name", array( 'maxlength' => 30, 'placeholder' => 'Type your name' ) ) ); ~~~ ### 初始化表單(Initializing forms)[](# "永久鏈接至標題") 從上面的例子我們可以看到表單項也可以在form對象初始化后進行添加。 當然開發者也可以對原有的Form類進行擴展: ~~~ <?php use Phalcon\Forms\Form; use Phalcon\Forms\Element\Text; use Phalcon\Forms\Element\Select; class ContactForm extends Form { public function initialize() { $this->add(new Text("name")); $this->add(new Text("telephone")); $this->add( new Select( "telephoneType", TelephoneTypes::find(), array( 'using' => array( 'id', 'name' ) ) ) ); } } ~~~ 由于 [*Phalcon\Forms\Form*](#) 實現了 [*Phalcon\DI\Injectable*](#) 接口,所以開發者可以根據自己的需要訪問應用中的服務。 ~~~ <?php use Phalcon\Forms\Form; use Phalcon\Forms\Element\Text; use Phalcon\Forms\Element\Hidden; class ContactForm extends Form { /** * This method returns the default value for field 'csrf' */ public function getCsrf() { return $this->security->getToken(); } public function initialize() { // Set the same form as entity $this->setEntity($this); // Add a text element to capture the 'email' $this->add(new Text("email")); // Add a text element to put a hidden csrf $this->add(new Hidden("csrf")); } } ~~~ 相關的實體在初始化時添加到表單, 自定義的選項通過構造器傳送: ~~~ <?php use Phalcon\Forms\Form; use Phalcon\Forms\Element\Text; use Phalcon\Forms\Element\Hidden; class UsersForm extends Form { /** * Forms initializer * * @param Users $user * @param array $options */ public function initialize($user, $options) { if ($options['edit']) { $this->add(new Hidden('id')); } else { $this->add(new Text('id')); } $this->add(new Text('name')); } } ~~~ 在表單實例中必須要這樣使用: ~~~ <?php $form = new UsersForm( new Users(), array( 'edit' => true ) ); ~~~ ### 驗證(Validation)[](# "永久鏈接至標題") Phalcon表單組件可以和 [*validation*](#) 集成,以提供驗證。 開發者要單獨為每個html元素提供內置或自定義的驗證器。 ~~~ <?php use Phalcon\Forms\Element\Text; use Phalcon\Validation\Validator\PresenceOf; use Phalcon\Validation\Validator\StringLength; $name = new Text("name"); $name->addValidator( new PresenceOf( array( 'message' => 'The name is required' ) ) ); $name->addValidator( new StringLength( array( 'min' => 10, 'messageMinimum' => 'The name is too short' ) ) ); $form->add($name); ~~~ 然后, 開發者可以根據用戶的輸入進行驗證: ~~~ <?php if (!$form->isValid($_POST)) { foreach ($form->getMessages() as $message) { echo $message, '<br>'; } } ~~~ 驗證器執行的順序和注冊的順序一致。 默認情況下,所有的元素產生的消息是放在一起的, 所以開發者可以使用簡單的foreach來遍歷消息, 開發者可以按照自己的意愿組織輸出: ~~~ <?php foreach ($form->getMessages(false) as $attribute => $messages) { echo 'Messages generated by ', $attribute, ':', "\n"; foreach ($messages as $message) { echo $message, '<br>'; } } ~~~ 或獲取指定元素的消息: ~~~ <?php foreach ($form->getMessagesFor('name') as $message) { echo $message, '<br>'; } ~~~ ### 過濾(Filtering)[](# "永久鏈接至標題") 表單元素可以在進行驗證前先進行過濾, 開發者可以為每個元素設置過濾器: ### 設置用戶選項(Setting User Options)[](# "永久鏈接至標題") ### 表單與實體(Forms + Entities)[](# "永久鏈接至標題") 我們可以把 model/collection/plain 設置到表單對象中, 這樣 phalcon 會自動的設置表單元素的值: ~~~ <?php $robot = Robots::findFirst(); $form = new Form($robot); $form->add(new Text("name")); $form->add(new Text("year")); ~~~ 在表單渲染時如果表單項未設置默認值, phalcon會使用對象實體值作為默認值: ~~~ <?php echo $form->render('name'); ?> ~~~ 開發者可以使用下面的方式驗證表單及利用用戶的輸入來設置值: ~~~ <?php $form->bind($_POST, $robot); // Check if the form is valid if ($form->isValid()) { // Save the entity $robot->save(); } ~~~ 也可以使用一個簡單的類做為對象實體進行參數傳遞: ~~~ <?php class Preferences { public $timezone = 'Europe/Amsterdam'; public $receiveEmails = 'No'; } ~~~ 使用此類做為對象實體,這樣可以使用此類中的值作為表單的默認值: ~~~ <?php $form = new Form(new Preferences()); $form->add( new Select( "timezone", array( 'America/New_York' => 'New York', 'Europe/Amsterdam' => 'Amsterdam', 'America/Sao_Paulo' => 'Sao Paulo', 'Asia/Tokyo' => 'Tokyo' ) ) ); $form->add( new Select( "receiveEmails", array( 'Yes' => 'Yes, please!', 'No' => 'No, thanks' ) ) ); ~~~ 實體中也可以使用getters, 這樣可以給開發者更多的自由, 當然也會洽使開發稍麻煩一些,不過這是值得的: ~~~ <?php class Preferences { public $timezone; public $receiveEmails; public function getTimezone() { return 'Europe/Amsterdam'; } public function getReceiveEmails() { return 'No'; } } ~~~ ### 表單控件(Form Elements)[](# "永久鏈接至標題") Phalcon提供了一些內置的html元素類, 所有這些元素類僅位于 Phalcon\Forms\Element命名空間下: | 名稱 | 描述 | 示例 | |-----|-----|-----| | Text | 產生 INPUT[type=text] 項 | [*Example*](#) | | Password | 產生 INPUT[type=password] 項 | [*Example*](#) | | Select | 產生 SELECT tag (combo lists) 項 | [*Example*](#) | | Check | 產生 INPUT[type=check] 項 | [*Example*](#) | | Textarea | 產生 TEXTAREA 項 | [*Example*](#) | | Hidden | 產生 INPUT[type=hidden] 項 | [*Example*](#) | | File | 產生 INPUT[type=file] 項 | [*Example*](#) | | Date | 產生 INPUT[type=date] 項 | [*Example*](#) | | Numeric | 產生 INPUT[type=number] 項 | [*Example*](#) | | Submit | 產生 INPUT[type=submit] 項 | [*Example*](#) | ### 事件回調(Event Callbacks)[](# "永久鏈接至標題") 當擴展表單時, 我們可以在表單類中實現驗證前操作及驗證后操作: ~~~ <?php use Phalcon\Mvc\Form; class ContactForm extends Form { public function beforeValidation() { } } ~~~ ### 渲染表單(Rendering Forms)[](# "永久鏈接至標題") 開發者對表單的渲染操作有完全的控制, 下面的的例子展示了如何使用標準方法渲染html元素: ~~~ <?php <form method="post"> <?php // Traverse the form foreach ($form as $element) { // Get any generated messages for the current element $messages = $form->getMessagesFor($element->getName()); if (count($messages)) { // Print each element echo '<div class="messages">'; foreach ($messages as $message) { echo $message; } echo '</div>'; } echo '<p>'; echo '<label for="', $element->getName(), '">', $element->getLabel(), '</label>'; echo $element; echo '</p>'; } ?> <input type="submit" value="Send"/> </form> ~~~ 或是在登錄表單中重用表單類: ~~~ <?php use Phalcon\Forms\Form; class ContactForm extends Form { public function initialize() { // ... } public function renderDecorated($name) { $element = $this->get($name); // Get any generated messages for the current element $messages = $this->getMessagesFor($element->getName()); if (count($messages)) { // Print each element echo '<div class="messages">'; foreach ($messages as $message) { echo $this->flash->error($message); } echo '</div>'; } echo '<p>'; echo '<label for="', $element->getName(), '">', $element->getLabel(), '</label>'; echo $element; echo '</p>'; } } ~~~ 視圖中: ~~~ <?php echo $element->renderDecorated('name'); echo $element->renderDecorated('telephone'); ~~~ ### 創建表單控件(Creating Form Elements)[](# "永久鏈接至標題") 除了可以使用phalcon提供的html元素以外, 開發者還可以使用自定義的html元素: ~~~ <?php use Phalcon\Forms\Element; class MyElement extends Element { public function render($attributes = null) { $html = // ... Produce some HTML return $html; } } ~~~ ### 表單管理(Forms Manager)[](# "永久鏈接至標題") 此組件為開發者提供了一個表單管理器, 可以用來注冊表單,此組件可以使用服務容器來訪問: ~~~ <?php use Phalcon\Forms\Manager as FormsManager; $di['forms'] = function () { return new FormsManager(); }; ~~~ 表單被添加到表單管理器, 然后設置了唯一的名字: ~~~ <?php $this->forms->set('login', new LoginForm()); ~~~ 使用唯一名, 我們可以在應用的任何地方訪問到表單: ~~~ <?php echo $this->forms->get('login')->render(); ~~~ ### 外部資源(External Resources)[](# "永久鏈接至標題") - [Vkuró](http://vokuro.phalconphp.com) 是一個使用表單構建器來創建和維護表單的示例 [[Github](https://github.com/phalcon/vokuro)] | - [索引](# "總目錄") - [下一頁](# "讀取配置(Reading Configurations)") | - [上一頁](# "驗證(Validation)") |
                  <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>

                              哎呀哎呀视频在线观看