checkbox list в yii

466
23 февраля 2017, 00:04

Здравствуйте. Прошел много форумов и статей, всё равно ничего не получается. Есть модель

/**
 * @inheritdoc
 */
protected $mass;
public static function tableName()
{
    return 'TestRes2_general_inf';
}
public function rules()
{
    return [
        [['id_TestRes1_all_types', 'Name'], 'required'],
        [['id_TestRes1_all_types'], 'integer'],
        [['Name'], 'string', 'max' => 150],
        [['id_TestRes1_all_types'], 'exist', 'skipOnError' => true, 'targetClass' => Testres1AllTypes::className(), 'targetAttribute' => ['id_TestRes1_all_types' => 'id']],
    ];
}
   /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'id программного продукта',
            'id_TestRes1_all_types'=>'id вид рез.тестирования',
            'Name' => 'Название программного продукта',
        ];
    }
     /**
     * @return \yii\db\ActiveQuery  
     */
    public function getParent()
    {
        return $this->hasOne(Testres1AllTypes::className(), ['id' => 'id_TestRes1_all_types']);
    }
}

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

class TestResultsController extends Controller
{
    public function actionAntivirus()
    {
        $id = Yii::$app->getRequest()->getQueryParam('id');
        $models = TestRes2GeneralInf::find()->where('id_TestRes1_all_types = :id', [':id' => $id])->all();
        /*$searchModel = new Testres1AllTypesSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);*/
        return $this->render('antivirus', [
//            'searchModel' => $searchModel,
            'models' => $models,
        ]);
    }
}

Так вот вся проблема в представлении. Эти элементы мне нужно реализовать в виде checkboxList

<?php
use yii\helpers\Html;
use yii\grid\GridView;
use yii\web\UrlManager;
use yii\bootstrap\ActiveForm;
use backend\models\TestRes2GeneralInf;
use yii\base\Model;
use yii\helpers\ArrayHelper;
$this->title = 'Антивирусные программы1';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="site-contact">
<h1><?= Html::encode($this->title) ?></h1>
      <div class="row">
            <div class="col-lg-5">
              <?php $form = ActiveForm::begin([
                    'id' => 'antivirus-test-results',
                    'action' => ['/test-results/antivirus-result'],
                    'options' => ['method' => 'post']
                ]);
                ?>
<?php       
             $options = ArrayHelper::map($models, 'id', 'Name');
//Не знаю как правильно или так,  
               echo $form->checkboxList($model,'mass',$options);
                 //или так
echo $form->field($models, 'mass')->checkboxList($options);          
    ?>             
                <div class="form-group">
                    <?= Html::submitButton('Результаты испытаний', ['class' => 'btn btn-primary', 'name' => 'contact-button']) 
                    ?>
                </div>
                <?php ActiveForm::end();?> 
            </div>
        </div>

Проштудировав все советы узнал что checkboxList возвращает список массивов и потому в модели нужно добавить свойство которое будет хранить массив выбранных чексбоксов. Потому модель я изменил

<?php
namespace backend\models;
use Yii;
class TestRes2GeneralInf extends \yii\db\ActiveRecord
{/
    protected $mass;
    public static function tableName()
    {
        return 'TestRes2_general_inf';
    }
    public function rules()
    {
        return [
            [['id_TestRes1_all_types', 'Name'], 'required'],
             ['mass', 'safe'],
            [['id_TestRes1_all_types'], 'integer'],
            [['Name'], 'string', 'max' => 150],
            [['id_TestRes1_all_types'], 'exist', 'skipOnError' => true, 'targetClass' => Testres1AllTypes::className(), 'targetAttribute' => ['id_TestRes1_all_types' => 'id']],
        ];
    }
public function getMass()
{
    return $this->mass;
}
public function setMass($value)
{
    /**
     * Здесь в приватном свойстве mass после load будет хранится массив
     */
    $this->mass = $value;
}
    public function attributeLabels()
    {
        return [
            'id' => 'id программного продукта',
            'id_TestRes1_all_types'=>'id вид рез.тестирования',
            'Name' => 'Название программного продукта',
        ];
    }
    public function getParent()
    {
        return $this->hasOne(Testres1AllTypes::className(), ['id' => 'id_TestRes1_all_types']);
    }
}

Но он все равно пишет ошибку. Я не понимаю в чем ошибка. Короче говоря мне нужно получить id-шки которые будут отмечены. Нашел возможность где он без ошибок выводит во view-ху всё checkbox-сы которые мне нужно. Но теперь проблема при нажатии submit,он в таком виде по моему ничего не отправляет в контроллер

echo Html::checkboxList($check_values,[], ArrayHelper::map($models, 'Name', 'Name'), ['class' => 'checkbox']);
READ ALSO
Как реализовать свой API?

Как реализовать свой API?

Нужно реализовать API, которым будут пользоваться с другого сайта (те

623
помогите разобратьсяс админкой на laravel 5.3

помогите разобратьсяс админкой на laravel 5.3

Мне нужно сделать админку на laravel

440
Php. Как вывести информацию с amung?

Php. Как вывести информацию с amung?

Хочу вывести ссылки wwwlaventanaindiscretadejulia

278
Движок для хостинга

Движок для хостинга

Логика ресурса - у каждого пользователя папка sitecom/папка, в которой он волен делать все что хочет(только в ней без доступа к остальному)

344