【问题标题】:Unknown Property and programatically adding textfields in Yii2 form未知属性并以编程方式以 Yii2 形式添加文本字段
【发布时间】:2016-05-24 15:38:50
【问题描述】:

我正在添加动态表单域:

<?php
$channels = Channel::find()->all();

foreach ( $channels as $channel ) {
    $channel_name = 'channel_' . strtolower( $channel->name );
    ?>
    <div class="col-xs-2">
        <?= $form->field( $model, $channel_name )->textInput()->label( $channel->name ) ?>
    </div>
<?php } ?>

我已在rules() 中声明它是安全的:

$channels = Channel::find()->all();

foreach ( $channels as $channel ) {
    $rules[] = [['channel_' . $channel->name], 'safe'];
}

return $rules;

但是我遇到了一个错误:

获取未知属性:app\models\MyModel::channel_facebook

如何在 Yii2 中动态声明'channel_' . $channel-&gt;name 属性?

【问题讨论】:

    标签: php yii2


    【解决方案1】:

    您可以简单地覆盖 attributes(),例如:

    public function attributes()
    {
        // just an example, not really efficient but it will work
        $attributes = [];
        $channels = Channel::find()->all(); 
        foreach ($channels as $channel) {
            $attributes[] = 'channel_' . strtolower($channel->name);
        }
        return array_merge(parent::attributes(), $attributes);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2018-03-17
      相关资源
      最近更新 更多