QeePHP 针对复杂的表单手写 Form view

如果在项目里能统一表单的样式布局肯定是最好的了,可能你只需要定义一两个general_form_element.php放在_element 里,view里调用_element(‘general_form’, array(‘form’ => $form)); ?>就可以了
但很多时候表单复杂了,布局改变了你就得去改general_form_element.php,而改了这个文件又会影响其他表单,当你不想为这个特殊的表单创建一个_element,那就手写吧

说明:这不符合 qeephp 的思想,不推荐

View 里这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div id="form">
    <form name="loginForm" id="loginForm" action="<?php echo url('default/login')?>" method="post">
        <div>
            <label for="username">Username:</label>
            <input type="text" name="username" id="username" size="20" value="<?php echo $form['username']->value()?>"?>
            <?php if (!$form['username']->isValid() && trim(implode('', $form['username']->errorMsg()))): ?>
            <p class="error">
                <?php echo nl2br(h(implode("\n", $form['username']->errorMsg()))); ?>
            </p>
            <?php endif;?>
        </div>
        <div>
            <label for="password">Password:</label>
            <input type="password" name="password" id="password" size="20" value="<?php echo $form['password']->value()?>"?>
            <?php if (!$form['password']->isValid() && trim(implode('', $form['password']->errorMsg()))): ?>
            <p class="error">
                <?php echo nl2br(h(implode("\n", $form['password']->errorMsg()))); ?>
            </p>
            <?php endif;?>
        </div>
    </form>
</div>

或者可以用

1
<?php echo Q::control($element->_ui, $id, $element->attribs()); ?>

Controller 里这样:

1
2
3
4
5
6
<?php
// 读取YAML配置文件
$form = new QForm();
$config = Helper_YAML::loadCached(Q::ini('app_config/APP_DIR') . '/form/login_form.yaml');
$form->loadFromConfig($config);
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// 无YAML
$form = new QForm();
$form->add(QForm::ELEMENT, 'username', array('_ui' => 'textbox'))
    ->addFilters('trim, strtolower')
    ->addValidations(array(
        array('min_length', 6, '密码至少需要5个字符'),
        array('min_length', 5, '用户名至少需要5个字符'),
    ));
$form->add(QForm::ELEMENT, 'password', array('_ui' => 'password'))
    ->addFilters('trim')
    ->addValidations(array(
        array('is_alnum', '用户名只能使用26个字母和数字'),
        array('max_length', 30, '密码最多30个字符'),
    ));
   
$this->_view['form'] = $form;
?>
Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
This entry was posted in Technologies and tagged , , . Bookmark the permalink.

2 Responses to QeePHP 针对复杂的表单手写 Form view

  1. 李理 says:

    皮鞋,你咋不用FleaPHP 呢.哈哈哈

  2. kukat says:

    FleaPHP 已经是过去时了,QeePHP 相当于 FleaPHP 2.0

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>