CodeIgniter - вызов функции изнутри представления - PullRequest
3 голосов
/ 05 декабря 2010

Можно ли вызвать функцию, которая находится в контроллере из вида?

Это то, что у меня есть в моем контроллере, например

function checkKeyExists($userid, $key){
}

Тогда, на мой взгляд, у меня есть следующее

if(checkKeyExists($row->id, $role->key)){
}

Но когда я запускаю его, он говорит, что checkKeyExists не определен.

Если кто-нибудь может дать мне знать, как я могу это сделать, это было бы здорово.

Ответы [ 7 ]

13 голосов
/ 05 декабря 2010

Представления не предназначены для вызова действий контроллера. Обратитесь к своей логике, вызовите эту функцию в контроллере и установите для нее переменную, которую вы отправили в представление. Затем вы можете сделать так, чтобы оператор if проверял эту переменную в вашем шаблоне представления.

Если это не работает для вас, возможно, вам нужен помощник: https://www.codeigniter.com/user_guide/general/helpers.html

6 голосов
/ 20 февраля 2011

Как сказал Уидокс, я думаю, что Помощник - лучший выход.Примерно так:

<?php // test_helper.php
if(!defined('BASEPATH')) exit('No direct script access allowed');

function checkKeyExists($userid, $key, $table)
{
    $CI =& get_instance();

    $query = $CI->db->query("SELECT $keyFROM $table WHERE id = $userid LIMIT 1");
    if($query->num_rows() > 0)
    {
        return true;
    }else
    {
        return false; 
    }
}

?>

Тогда вы можете свободно использовать свои представления, просто загружая их в соответствующие контроллеры, например: $ this-> load-> helper ('test');.

2 голосов
/ 09 декабря 2010

Ваш контроллер должен передать набор данных для вашего просмотра.

Ваш взгляд может затем проверить, установлено ли что-то и затем действовать соответствующим образом.

$this->data['my_setting']='value';
$this->load->vars($this->data);
$this->load->view('your_view');

Тогда по вашему мнению:

if(isset($my_setting)){
  do something with my_setting
}
1 голос
/ 19 августа 2013

вы можете объявить функцию таким образом в представлениях:

$myfunction = function_that_do_something( ) {
}

// then call as you want
$myfunction( );

единственное, что вы не можете получить доступ к переменным из функции -> просто передать их в функцию

0 голосов
/ 06 января 2016

Вызов функции контроллера из поля зрения не очень хорошая идея.это против роли MVC.Но вы можете вызвать функцию Model из вида.Больше ответов по этому вопросу доступно здесь

0 голосов
/ 03 сентября 2015

Контроллер:

public function xyz(){
   $data['controller'] = $this;
   $this->load->view('your_view_file',$data);
}  

Просмотр:

$controller->xyz();
0 голосов
/ 17 июня 2015

Этот путь гладкий.

@controller method
$obj = array();
$obj['fnc'] = function(){ return 'hello'; };
$this->load->view( 'your_path', $obj );

@view
echo $fnc();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...