mindy/form

3.0.3 2016-10-14 09:24 UTC

README

Build Status

问题

小部件

使用小部件是当需要在表单字段中添加某些逻辑时必需的。例如,连接带有文本许可证的附加字段,使用第三方插件显示评分,连接地图等等。

小部件示例

<?php

namespace Mindy\Form\Widget;

use Mindy\Form\Widget;
use Mindy\Helper\JavaScript;
use Mindy\Helper\JavaScriptExpression;

class RatingWidget extends Widget
{
    public $options = [];

    /**
     * @return string
     */
    public function render()
    {
        $field = $this->getField();
        $jsOptions = JavaScript::encode(array_merge([
            'starType' => 'i',
            'numberMax' => 5,
            'score' => $field->getValue(),
            'click' => new JavaScriptExpression('function(score, evt) {
                $("#' . $field->getHtmlId() . '").val(score);
            }')
        ], $this->options));
        $js = "<div id='{$field->getHtmlId()}_rating' class='rating-input'></div><script type='text/javascript'>$('#{$field->getHtmlId()}_rating').raty({$jsOptions});</script>";
        return $field->renderInput() . $js;
    }
}

使用方法

<?php

class MyForm extends Form
{
    public function getFields()
    {
        return [
            'rating' => [
                'class' => CharField::class,
                'widget' => new RatingWidget
            ]
        ];
    }
}