checkbox в yii 2.0

545
28 февраля 2017, 18:48

Подскажите, пожалуйста, как в представлении вывести в ActiveForm checkboxList, значение которые являются объектами модели переданными из контроллера? И как их потом считать в контроллере?

Answer 1

Если например модель Item, в ней есть поля id и checkbox_id. И есть модель CheckboxValues с полями id и name в которой мы храним все возможные значения чекбоксов.

В контроллере:

public function actionEdit($id)
{
    $item = Item::findOne($id);
    // Сохраняем
    if ($item->load(Yii::$app->request->post())) {
        if ($item->save()) {
            Yii::$app->getSession()->setFlash('success', 'Значение сохранено успешно');
        } else {
            Yii::$app->getSession()->setFlash('error', 'Ошибка сохранения в базу');
        }
    }
    // Получаем массив значений чекбоксов
    $checkboxValues = \yii\helpers\ArrayHelper::map(CheckboxValues::find()->all(), 'id', 'name');
    return $this->render('edit', [
        'item' => $item,
        'checkboxValues' => $checkboxValues
    ]);
}

Во вьюхе (edit.php):

use yii\bootstrap\ActiveForm;
use yii\helpers\Html;
$form = ActiveForm::begin(['method' => 'post']);
echo $form->field($item, 'checkbox_id')->checkboxList($checkboxValues);
echo Html::submitButton('Сохранить');
ActiveForm::end();
Answer 2

@Pa3Py6aka Я создал новую модель `

namespace frontend\models;
use yii\base\Model;
class ReqModel extends Model
{
public $id ;
public $checkbox_id;
public function rules()
{
        return [
            [['id', 'checkbox_id', 'safe'],
        ];
    }
    }`

в контроллере

public function actionAntivirus($id)
    {
         $id = Yii::$app->getRequest()->getQueryParam('id');
        $models = TestRes2GeneralInf::find()->where('id_TestRes1_all_types = :id', [':id' => $id])->all();
        $result = ArrayHelper::map($models, 'id', 'Name'); /////////////////////
        $item=new ReqModel();
        return $this->render('antivirus', [
//            'searchModel' => $searchModel,
            'models' => $item, 'result'=>$result,
        ]);
    }

В представление

           <?php $form = ActiveForm::begin([
                    'id' => 'antivirus-test-results',
                    'action' => ['/test-results/antivirus-result'],
                    'options' => ['method' => 'post']
                ]);
<?php                                        
           echo $form->field($models, 'checkbox_id')->checkboxList($result);
                <div class="form-group">
                    <?= Html::submitButton('Результаты испытаний', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
                </div>
                <?php ActiveForm::end();?>

И всё равно ничего не пашет ((( Вроде всё правильно описал, понимаю каждую строчку, но в чем ошибка?

READ ALSO
Мультиязычность в Laravel

Мультиязычность в Laravel

Как правильно сделать мультиязычность в Laravel, что бы язык был в роуте, типа pl/team/1 ?

325
Непонятная работа AJAX

Непонятная работа AJAX

Не работает простейший ajax запросПри нажатии на кнопку должно отправляться письмо

242
отличие class от function php

отличие class от function php

здравствуйте, программирую на php без нескольких месяцев год, и пока что не могу точно понят в чём преимущество классов по сравнению с функциями,...

263
Возвращает строку вместо json-объекта

Возвращает строку вместо json-объекта

Есть файл, в котором обрабатываются данные и есть прокси, который написан для для кросс-доменных запросовФайл, в котором обрабатываются данные,...

295