Сохранение многозначных значений yii2 в виджете kartik

#php #arrays #string #yii2 #widget

#php #массивы #строка #yii2 #виджет

Вопрос:

Я пытаюсь выполнить многовыбор с помощью kartik multiselect widget в yii2 в форме, в которой моя переменная $ data получает массив строк

 <? $data = ArrayHelper::map(pupil::find()->all(),'pupilId','firstname'); ?>
 var_dump($data) = array(6) { [1]=> string(5) "rotem" [3]=> string(3) "ttt" [6]=> string(12) "tom wininger" [7]
  

я сохраняю его в БД методом before save и преобразую в строку идентификаторов, но когда я пытаюсь просмотреть его в своем представлении, я получаю всех учеников, а не только выбранного

какой метод я могу написать, который будет принимать только выбранные значения и будет отображать их в моем файле просмотра, как в db, но в виде имен

это то, что я сохраняю в базе данных (идентификаторы выбранных учеников)

это то, что я получаю (все ученики, а не только избранные)

Ответ №1:

У меня есть похожая вещь, поэтому я знаю, как с этим справиться, но поскольку вы не указали свои переменные и как выглядит ваш метод, я напишу какой-нибудь случайный.

Допустим, вы выполняете сброс $data и получаете:

 array(3) {
    [1]=> string(5) "rotem"
    [3]=> string(3) "ttt"
    [6]=> string(12) "tom wininger"
}
  

Затем:

 foreach($data as $dat) {
    // Do your operators here, for example:
    echo $dat.'<br>';
}
  

При этом каждая переменная будет выведена в новой строке:

 rotem
ttt
tom wininger
  

Комментарии:

1. потому что мне нужна переменная, которая находится в виджете

2. будет введено в виде строки

3. @TomWininger я хотел бы получить еще несколько разъяснений: вы хотите получить этот массив из виджета или вставить в виджет?

4. я хотел сохранить несколько значений и показать их в view и index, поэтому я нашел решение для их сохранения, добавив метод before save и преобразовав массив в строку, так что теперь я получаю эту строку, если идентификатор 1,2,4,5, но я не знаю, как отображать имена вместо идентификаторов в view

5. Можете ли вы рассказать мне, что вы получаете с помощью var_dump (либо скриншот, либо форматированный код)?