Здравствуйте. Прошел много форумов и статей, всё равно ничего не получается. Есть модель
/**
* @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']);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Логика ресурса - у каждого пользователя папка sitecom/папка, в которой он волен делать все что хочет(только в ней без доступа к остальному)