标签: codeigniter

从外部文件访问codeigniter会话值

在我的codeigniter项目中,我添加了KCK查找程序.

它需要一些由codeigniter控制的会话值.如何从外部文件访问CI会话值?

php session codeigniter

6
推荐指数
1
解决办法
1万
查看次数

Codeigniter表单验证:如果发现任何验证错误,如何重定向到上一页?

我正在使用Codeigniter的验证类来验证我的表单.如果发现任何验证错误,您能否告诉我如何从控制器重定向到上一页?

在我的控制器中:

if ($this->form_validation->run() == FALSE){

  //**** Here is where I need to redirect  

} else  {
     // code to send data to model...           

  }                             
Run Code Online (Sandbox Code Playgroud)

codeigniter codeigniter-2

6
推荐指数
2
解决办法
2万
查看次数

如何通过redirect()传递验证错误数据?

我有一个包含表单的页面,当任何用户提交表单时,数据会转到控制器,控制器会检查验证,如果有任何错误,它会将用户重定向到上一页(包含表单的页面),否则它会将数据发送给模型.

要从控制器重定向到上一页(如果有任何验证错误),我有以下代码

        redirect($this->input->post('redirect'));
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,但问题是它将用户重定向到上一页(包含表单的页面)后,它没有显示验证错误.

那么请您告诉我如何通过上面发布的"重定向"代码传递验证错误信息并在该页面上显示验证错误消息?

提前致谢 :)

解:

在我的控制器中:

   $redirect=$this->input->post('redirect'); //  << for this I have- <input name="redirect" type="hidden" value="<?= $this->uri->uri_string() ?>" />         in my view file

   $this->session->set_flashdata('errors', validation_errors());
   redirect($this->input->post('redirect')); 
Run Code Online (Sandbox Code Playgroud)

在我的视图文件中:

   <?php

    if ($this->session->flashdata('errors')){ //change!
    echo "<div class='error'>";
    echo $this->session->flashdata('errors');
    echo "</div>";
    }

    ?>
Run Code Online (Sandbox Code Playgroud)

因此,我可以通过从控制器重定向到上一页来传递验证错误数据

codeigniter codeigniter-2

6
推荐指数
1
解决办法
1万
查看次数

在codeigniter中取消一些会话数据

我在会话中保存了一些数据,并在我的网站中保存了某些点,我给用户提供了根据数组键删除会话的某些部分的选项,我得到的数组,

print_r($this->session->userdata('shortlist'); 这给我留下了以下输出,

Array ( [0] => Array ( 
    [id] => 40 
    [name] => Namey Name 
    [location] => location is a place 
    [talent] => voice over 
    [image] => ./media/uploads/headshots/width_60_249613_10150280293315435_717615434_9570480_8341358_n.jpg ) );
Run Code Online (Sandbox Code Playgroud)

如何从我的候选名单会话中删除此内容?我尝试过以下操作,但无济于事,

unset($this->session->userdata('shortlist')[0]);

php session codeigniter user-data

6
推荐指数
1
解决办法
3万
查看次数

Codeigniter - 如果数据库查询未返回任何结果,则执行操作

如果我的查询没有返回结果,我怎么能返回'找不到数据'的值?

这是我的代码:

    function getTerms($letter) {


    $this->db->select('term, definition');
    $this->db->from('glossary');
    $this->db->where(array('letter' => $letter));

    $query = $this->db->get();

    foreach ($query->result() as $row) {
        $data[] = array(
            'term' => $row->term,
            'definition' => $row->definition
        );
    }

    return $data;
}
Run Code Online (Sandbox Code Playgroud)

它当前返回$ data变量,即使查询没有返回给我php错误的结果.如何在返回$ data数组之前检查是否有结果.

mysql variables codeigniter return

6
推荐指数
2
解决办法
2万
查看次数

将函数的变量传递给codeigniter中控制器中的其他函数?

我有一个具有下一个功能的控制器:

class controller {

    function __construct(){

    }

    function myfunction(){
        //here is my variable
        $variable="hello"
    }


    function myotherfunction(){
        //in this function I need to get the value $variable
        $variable2=$variable 
    }

}
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答.如何将函数的变量传递给codeigniter控制器中的其他函数?

codeigniter

6
推荐指数
1
解决办法
1万
查看次数

针对不同条件计算单列

对于不同的条件,我需要在单列上有3种不同的计数.

表结构:

interview-
id-int(10)
c_id-int(10)
experience-varchar2(100)
Run Code Online (Sandbox Code Playgroud)

经验有3个不同的值 - 1)正2)负3)中立

对于c_id = 10的条件,我需要3个不同的"count_positive","count_negative"和"count_neutral"计数.

我知道它可以通过3个不同的查询获得.我可以通过单个查询获得3个计数吗?

php mysql sql codeigniter

6
推荐指数
1
解决办法
1011
查看次数

在codeigniter中使用SQLite

我正在尝试在最新版本的CodeIgniter中开始使用sqlite.

我的database.php看起来像这样:

$active_group = 'default';
$active_record = TRUE;

$db ['default'] ['hostname'] ='';
$db ['default'] ['username'] ='';
$db ['default'] ['password'] ='';
$db ['default'] ['database'] = APPPATH. 'db / producers.sqlite';
$db ['default'] ['dbdriver'] = 'sqlite';
$db ['default'] ['dbprefix'] ='';
$db ['default'] ['pconnect'] = TRUE;
$db ['default'] ['db_debug'] = TRUE;
$db ['default'] ['cache_on'] = FALSE;
$db ['default'] ['cachedir'] ='';
$db ['default'] ['char_set'] = 'utf8';
$db ['default'] ['dbcollat??'] = 'utf8_general_ci';
$db ['default'] ['swap_pre'] ='';
$db ['default'] ['autoinit'] = TRUE;
$db ['default'] ['stricton'] = FALSE; …
Run Code Online (Sandbox Code Playgroud)

sqlite codeigniter

6
推荐指数
1
解决办法
6433
查看次数

Codeigniter - 使我的控制器更干燥

在我的codeigniter控制器函数中,我使用以下代码生成我的视图并插入所有必要的内容:

        $left_column = $this->load->view('widgets/sub_navigation', $subnav_data, true);
        $left_column .= $this->load->view('widgets/search_box', '', true); //Set data to be loaded into columns
        $left_column_base = $this->load->view('widgets/assist_navigation', '', true);
        $center_column = 'this is center column';
        $right_column = $this->load->view('widgets/ask_us_a_question', '', true);
        $right_column .= $this->load->view('widgets/newsletter', '', true);
        $right_column .= $this->load->view('widgets/latest_news', '', true);

        $this->template->inject_partial('left_column', $left_column); //Inject data into the partial columns
        $this->template->inject_partial('left_column_base', $left_column_base);
        $this->template->inject_partial('center_column', $center_column);
        $this->template->inject_partial('right_column', $right_column);
        $this->template->build('template',$data); 
Run Code Online (Sandbox Code Playgroud)

我使用的是三列布局,上面的代码指示了每个列中显示的内容.它以非常模块化的方式工作,允许我快速自定义每个页面.

有没有办法简化上面的代码,使用数组可能,减少重复代码,使事情更干?

php model-view-controller templates codeigniter dry

6
推荐指数
2
解决办法
1510
查看次数

如何在Codeigniter中实例化同一对象的多个实例?

与传统的面向对象,我会(或可能,而)创建一个模型/对象,它表示一个User,与反映性质,即name,id,job title等

然后我可以创建该对象的新实例并将其分配给变量,如果我循环遍历结果集,我可以为每个创建一个实例.使用codeigniter,这似乎是不可能的,如:

$this->load->model('User');
Run Code Online (Sandbox Code Playgroud)

实例化它,并将其放置在$this->user.

有没有办法以更传统的方式使用模型作为对象?但是没有破解CI的做事方式?

我知道你可以使用东西将事物分配给不同的对象名称$this->load->model('User', 'fubar'),但它不像简单地将实例分配给变量那样动态.

任何洞察此事的人都非常感谢.

编辑:感谢答案的人,我认为我错过了工作"Codigniter方式"的重要部分,但我一直在寻找一个贡献的库,以及使用相同实例(分配给codeigniter命名空间)的做法)但每次使用后清除实例变量似乎是一个很好的工作方式,取消了我的预订.

再一次 - 感谢您的帮助和答案.

php oop codeigniter object instantiation

6
推荐指数
1
解决办法
4263
查看次数