2016-05-24 3 views
1

Я добавляю динамическое поле формы:неизвестное свойство и программно добавляющие в текстовые поля Yii2 форме

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

Однако я получаю сообщение об ошибке :

Getting unknown property: app\models\MyModel::channel_facebook

Как динамически объявить 'channel_' . $channel->name свойства в 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); 
} 
+0

отлично, работает, поэтому я возьму его ... – keeg

Смежные вопросы