Я использую CI 3.1.9 и в своей HTML-форме ниже я создаю динамические входные данные из PHP с ключом и значением, как показано ниже:
<form action="<?= base_url();?>/process" method="post">
<?php
foreach ($invoices as $invoice) {
// $invoice has values like 124-55441
?>
<input type="text" name="amounts[<?= $invoice; ?>]">
<?php } ?>
<input type="submit", value="submit">
</form>
Теперь в папке config я поместил файл form_validation.php с массивом правил проверки, как показано ниже:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/* Custom Validation Rules */
$config = array(
'invoices' => array(
array(
'field' => 'amounts[]',
'rules' => 'trim|callback_checkAmountsToPay'
)
);
?>
В моем контроллере Process.php я поместил следующий код:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Process extends CI_Controller {
public function index(){
if ($this->input->method(TRUE) === "POST") {
if ($this->form_validation->run("invoices") == FALSE) {
echo "Validation Failed";
} else {
$amounts = $this->input->post("amounts");
var_dump($amounts);
}
} else {
$this->load->view('invoices');
//Loading the form to view
}
}
//Custom validation form
public function checkAmountsToPay($arrAmounts) {
var_dump($arrAmounts);//Shows empty value
$this->input->post("amounts"); //Shows all array sent by the form.
die();
}
}
?>
Пользовательский метод проверки checkAmountsToPay всегда отображает пустое значение для массива записей «сумма []», отправленных моей формой, однако, если я добавлю $ this-> input-> post («суммы»); он показывает весь массив, так почему параметры записи не отправляются в пользовательскую функцию проверки?
Спасибо.