Cómo llamar a la función del controlador codeigniter desde la vista
¿ Cómo llamar a la función del controlador codeigniter desde la vista? Cuando llamo a la función en un controlador, obtener una página 404.
12 answers
Codeigniter es un framework MVC (Model - View - Controller). Realmente no es una buena idea llamar a una función desde la vista. La vista se debe utilizar solo para la presentación, y toda su lógica debe estar sucediendo antes de llegar a la vista en los controladores y modelos.
Un buen comienzo para aclarar la mejor práctica es seguir este tutorial:
Https://codeigniter.com/user_guide/tutorial/index.html
Es simple, pero realmente establece un excelente cómo hacerlo.
Espero que esto ayude!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-20 14:00:07
Puede llamar a la función del controlador desde la vista de la siguiente manera:
Controlador:
public function read()
{
$object['controller']=$this;
$this->load->view('read',$object);
}
Vista:
//to call controller function from view do
$controller->myOtherFunct();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-20 06:24:50
Puede llamar a una función de controlador con AJAX en su vista. En este caso, estoy usando la biblioteca jQuery para hacer la llamada.
<script type="text/javascript">
$.ajax({
url: "<?=site_url("controller/function")?>",
type: "post", // To protect sensitive data
data: {
ajax:true,
variableX: "string",
variableY: 25
//and any other variables you want to pass via POST
},
success:function(response){
// Handle the response object
}
});
</script>
De esta manera puede crear porciones de código (módulos) y recargarlas con el método AJAX en un contenedor HTML.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-28 13:30:56
Me gustaría responder a esta pregunta ya que esto viene todas las veces en las búsquedas {
Puede llamar a un método de controlador en view, pero tenga en cuenta que esta no es una buena práctica en ningún MVC, incluido codeigniter.
Su controlador puede ser como debajo de la clase {
<?php
class VCI_Controller extends CI_Controller {
....
....
function abc($id){
return $id ;
}
}
?>
Now You can call this function in view files as below --
<?php
$CI =& get_instance();
$CI->abc($id) ;
?>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-26 04:57:05
class MY_Controller extends CI_Controller {
public $CI = NULL;
public function __construct() {
parent::__construct();
$this->CI = & get_instance();
}
public function yourMethod() {
}
}
// in view just call
$this->CI->yourMethod();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-14 03:59:05
Las vistas no pueden llamar a las funciones del controlador.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-03 03:18:13
Una idea que puedo dar es,
Llame a esa función en el propio controlador y devuelva el valor para ver el archivo. Como,
class Business extends CI_Controller {
public function index() {
$data['css'] = 'profile';
$data['cur_url'] = $this->getCurrURL(); // the function called and store val
$this->load->view("home_view",$data);
}
function getCurrURL() {
$currURL='http://'.$_SERVER['HTTP_HOST'].'/'.ltrim($_SERVER['REQUEST_URI'],'/').'';
return $currURL;
}
}
In view(home_view.php) usa esa variable. Como,
echo $cur_url;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-22 05:12:29
Sé que esto es malo.. Pero he estado en una situación difícil en la que es imposible volver a poner esto en el controlador o modelo.
Mi solución es llamar a una función en el modelo. Se puede hacer dentro de una vista. Pero usted tiene que asegurarse de que el modelo ha sido cargado a su controlador primero.
Diga su modelo main_model, puede llamar a la función en el modelo de esta manera en su vista : $this->main_model->your_function ();
Espero que esto ayude. :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-25 04:34:17
También podemos pasar la función de controlador como variable en la página de vista.
class My_controller extends CI_Controller {
public function index() {
$data['val']=3;
$data['square']=function($val){
return $val*$val;
};
$this->load->view('my-view',$data);
}
}
En la página de vista
<p>Square of <?=$val?>
<?php
echo $square($val);
?>
</p>
La salida es 9
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-27 07:44:19
Es bastante simple simplemente tener la función correctamente escrita en la clase controller y usar una etiqueta para especificar la clase controller y el nombre del método, o cualquier otro parámetro necesario..
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Iris extends CI_Controller {
function __construct(){
parent::__construct();
$this->load->model('script');
$this->load->model('alert');
}public function pledge_ph(){
$this->script->phpledge();
}
}
?>
Esta es la clase de controlador Iris.php y la clase modelo con la función apuntada desde la clase controlador.
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Script extends CI_Model {
public function __construct() {
parent::__construct();
// Your own constructor code
}public function ghpledge(){
$gh_id = uniqid(rand(1,11));
$date=date("y-m-d");
$gh_member = $_SESSION['member_id'];
$amount= 10000;
$data = array(
'gh_id'=> $gh_id,
'gh_member'=> $gh_member,
'amount'=> $amount,
'date'=> $date
);
$this->db->insert('iris_gh',$data);
}
}
?>
En la vista en lugar de un botón, simplemente use el enlace de anclaje con el nombre del controlador y el nombre del método.
<html>
<head></head>
<body>
<a href="<?php echo base_url(); ?>index.php/iris/pledge_ph" class="btn btn-success">PLEDGE PH</a>
</body>
</html>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:03:15
Si necesita llamar a un controlador desde una vista, tal vez para cargar una vista parcial, pensando como programación modular, y usted debe implementar la estructura HMVC en lugar del plano MVC. CodeIgniter no implementó HMVC de forma nativa, pero puede usar esta útil biblioteca para implementar HMVC. https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc
Después de la configuración recuerde: que todos sus controladores deben extenderse desde MX_Controller para poder usar esta característica.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-19 08:12:02
Prueba este.
Agregue este código en Su archivo de vista
$CI = & get_instance();
$result = $CI->FindFurnishName($pera);
Agregue código en su archivo de controlador
public function FindFurnishName($furnish_filter)
{
$FindFurnishName = $this->index_modal->FindFurnishName($furnish_filter);
$FindFurnishName_val = '';
foreach($FindFurnishName as $AllRea)
{
$FindFurnishName_val .= ",".$AllRea->name;
}
return ltrim($FindFurnishName_val,',');
}
Donde
- FindFurnishName es el nombre de la función que se define en Su Controlador.
- per pera es una opción (según su necesidad).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-28 06:46:21