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;
}