parameter ip_address from form example enviar datos data forms codeigniter post

forms - ip_address - CodeIgniter POST/GET valor por defecto



post get codeigniter (3)

¿Puedo establecer el valor predeterminado para los datos POST / GET si está vacío / falso, algo así como

$this->input->post("varname", "value-if-falsy")

?

Entonces no tengo que codificar como

$a = $this->input->post("varname") ? $this->input->post("varname") : "value-if-falsy"

Gracias.


Tienes que anular el comportamiento predeterminado.

En application / core crea MY_Input.php

class MY_Input extends CI_Input { function post($index = NULL, $xss_clean = FALSE, $default_value = NULL) { // Check if a field has been provided if ($index === NULL AND ! empty($_POST)) { $post = array(); // Loop through the full _POST array and return it foreach (array_keys($_POST) as $key) { $post[$key] = $this->_fetch_from_array($_POST, $key, $xss_clean); } return $post; } $ret_val = $this->_fetch_from_array($_POST, $index, $xss_clean) if(!$ret_val) $ret_val = $default_value return $ret_val; } }

Y luego en tu controlador:

$this->input->post("varname", "", "value-if-falsy")


Funciona para mí, he usado el truco de @AdrienXL.

Simplemente crea tu archivo application/core/MY_Input.php y llama al método principal (puedes encontrar este método dentro de la carpeta del system/core/Input.php CodeIgniter system/core/Input.php :

<?php (defined(''BASEPATH'')) OR exit(''No direct script access allowed''); class MY_Input extends CI_Input { function post($index = NULL, $default_value = NULL, $xss_clean = FALSE) { $value = parent::post($index, $xss_clean); if(!$value) $value = $default_value; return $value; } function get($index = NULL, $default_value = NULL, $xss_clean = FALSE) { $value = parent::get($index, $xss_clean); if(!$value) $value = $default_value; return $value; } }

Entonces, cuando llame al método, pase el valor predeterminado:

$variable = $this->input->post("varname", "value-if-falsy");


Puede simplificar el bloque de código como se muestra a continuación

public function post($index = NULL, $xss_clean = NULL, $default_value = NULL ) { if( is_null( $value = $this->_fetch_from_array($_POST, $index, $xss_clean ) ) ){ return $default_value; } return $value; }