如何在Yii中更改cactiveform,chtml和其他小部件/组件的默认设置

时间:2016-03-31 10:35:52

标签: php yii twitter-bootstrap-3

我喜欢全局更改'CWidgets'的默认设置,例如'CActiveForm','CHtml'等,以便与bootstrap或其他css框架一起使用。为此我在main.php中使用'WidgetFactory。

这是我的main.php文件

main.php

'widgetFactory'=>array(
'widgets'=>array(

    // <form></form>
    'CActiveForm' => array(

        // the CSS class name for error messages. (CHtml::$errorMessageCss)
        'errorMessageCssClass'=>'errorMessage help-block',

        // Please note: When you enable ajax validation, make sure the corresponding
        // controller action is handling ajax validation correctly.
        // There is a call to performAjaxValidation() commented in generated controller code.
        // See class documentation of CActiveForm for details on this.
        'enableAjaxValidation'=>false,
        'enableClientValidation' => false,

        'htmlOptions'=>array(
        ),
    ),
),
),

这有效,类的'errorMessage'和'help-block'都是 在执行

时添加到表单中的所有单个错误消息
<?php echo $form->error($model,'username'); ?>

会渲染

<div class="errorMessage help-block" id="Tbltask_username_em_">Username cannot be empty
</div>
来自'CActiveForm'的'errorMessageCssClass'是'公共财产'。

但现在我想从'CActiveForm'改变'errorSummary'这是'公共方法'。我想添加类'alert'和'alert-danger'。

<?php echo $form->errorSummary($model); ?>

通常会呈现

<div class="errorSummary" id="tbltask-form_es_">
<ul>
    <li>Username cannot be empty.</li>
</ul>
</div>

怎么做?将它添加到'WidgetFactory'中的'CActiveForm'不起作用

// <form></form>
'CActiveForm' => array(

        // 'Public Property' SUCCESS :) CHtml::$errorMessageCss
        'errorMessageCssClass'=>'errorMessage help-block',

        // 'Public Method' FAIL :( CHtml::errorSummary
        'errorSummary'=>'errorSummary alert alert-danger',
),

有人可以向我解释“公共属性”和“公共方法”之间的区别,以及如何设置“公共方法”的默认设置?喜欢'CActiveForm'中的errorSummary?

我注意到所有消息都来自'CHtml'。如何更改main.php中的默认“CHtml”设置?将它添加到'widgetFactory'不起作用(或者是吗?)

1 个答案:

答案 0 :(得分:0)

CActiveForm::errorSummary()似乎需要几个参数,包括htmlOptions。您可以将html属性作为键/值对放在此处。

<?= $form->errorSummary($model, NULL, NULL, ['style' => 'errorSummary alert alert-danger']) ?>

或更旧的php版本

<?php echo $form->errorSummary($model, NULL, NULL, array('style' => 'errorSummary alert alert-danger')) ?>

我没看到你如何向widgetfactory添加这样的东西,所以你只需这样做或者等待其他人回答那个部分。