Как вы передаете многомерный массив из вида в контроллер?

Было легко передать данные из контроллера для просмотра. Также для передачи данных из представления в контроллер вам нужны теги формы. Но как вы передаете массив из формы ввода? есть идеи, ребята? вот как выглядит массив:

$test = array
(
array($employee_id[0],$name[0],$days_worked[0],$overtime_hours[0]),
array($employee_id[1],$name[1],$days_worked[1],$overtime_hours[1]),
array($employee_id[2],$name[2],$days_worked[2],$overtime_hours[2])
);

и из моего представления HTML я получил здесь форму ввода:

<input name="test" type="text" class="form-control" id="test" value="<?php echo $test;?>">

и когда я добрался до своей модели, чтобы проверить, получили ли она данные внутри массива:

$this->test = $_POST['test'];
echo $test = $_POST['test'];

все, что я получил, было строкой «Array». Я не могу получить доступ к тому, что находится внутри массива. Мне нужна помощь.

1

Решение

Ваши вопросы неясны. Вы хотите передать массив для просмотра или для вывода HTML в элемент INPUT?
Это две разные вещи, так как одна только передает массив внутри вашего приложения (на сервере), а вторая передает его в ваши данные формы, отображает их в браузере, а затем отправляет форму на сервер и получает данные там.

Во-первых, я не вижу проблем, так как передача переменных не проблема
Второе — по умолчанию невозможно передать многомерный массив во вход формы. Поскольку вход имеет только 1 измерение.
Вы можете передать данные с помощью некоторой функции преобразования, например, в виде строки JSON

 value="<?php echo json_encode($test);?>"

и затем загрузите это так:

   $this->test = json_decode($_POST['test']);

Но это не имеет смысла во внешнем интерфейсе, я думаю, так как пользователь не будет понимать, какие данные представлены в поле ввода.

Для этого логическим образом я бы разделил данные на группы, а затем отобразил бы соответственно больше полей ввода, например.

 <input name="test[0][employee_id]" type="text" class="form-control" id="test" value="<?php echo $test[0][0];?>">
<input name="test[0][employee_name]" type="text" class="form-control" id="test" value="<?php echo $test[0][1];?>">
<input name="test[0][employee_days_worked]" type="text" class="form-control" id="test" value="<?php echo $test[0][2]?>">
<input name="test[0][employee_overtime]" type="text" class="form-control" id="test" value="<?php echo $test[0][3];?>">

но делай это приятнее. Таким образом, вы можете создать sth, который будет отправлен как multi-dim. массив в скрипт php.

как предложено в другом ответе здесь, вы можете увидеть структуру с помощью var_dump ($ test)

1

Другие решения

Значения массива нельзя передавать непосредственно в данные формы.
Вы должны использовать json_encode.
В вашем представлении файла

   $encoded_text =  echo json_encode($test);
<input name="test" type="text" class="form-control" id="test" value="<?php echo $encoded_text ;?>">

Теперь в вашей модели просто расшифруйте это

$test = json_decode($test, $assoc = TRUE);

1

Если вы используете serialize () на вашем контроллере и unserialize () в представлении, вы сможете получить к нему доступ таким же образом. Я полагаю, это то, что вы спрашиваете.

1
По вопросам рекламы [email protected]