2016-05-10 7 views
0

У меня есть массив массивов, которые я просматриваю в своем представлении, чтобы отобразить их в таблице, и у меня есть кнопка подтверждения, которую мне нужно щелкнуть, чтобы сохранить эти данные таблицы в дб. Мой вопрос в том, как передать этот массив массивов из представления в мой контроллер, чтобы продолжить хранение в db?Codeigniter: передать массив массивов из представления в контроллер

Я попытался использовать форму и передать ее как данные для записи, используя json_encode(), чтобы преобразовать массив в строку, но не повезло. Я получаю сообщение об ошибке

Сообщение: json_decode() ожидает параметр 1, чтобы быть строка, массив дал

Могу ли я каким-то образом передать переменную массива в функции на щелчок моего поля ввода?

Спасибо.

+1

можете ли вы опубликовать некоторые фрагменты? –

ответ

1

Я нашел решение моей проблемы. Вот что сработало для меня. я проходил мой массив массивов в качестве значения строки в скрытом поле ввода с помощью

json_encode($array) 

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

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

разваливался ...

решение было избежать персонажей, так что мне пришлось заменить эту строку с

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

И в контроллере я должен был получить мой массив из JSON со следующими линиями

$dataJson = $this->input->post('array'); 
$dataArray = json_decode(htmlspecialchars_decode($dataJson), true); 

Спасибо всем за ответы!

1

Вы можете передать массив в строку URL-адрес, как это:

?arr[]=val1&arr[]=val2 //pass as the url param 
//in controller 
var_dump($_GET["arr"]); 

//result should be 
array(2) { [0]=> string(4) "val1" [1]=> string(4) "val2" } 
Смежные вопросы