标签: codeigniter

我在哪里为Codeigniter(PHP)放置常量文件?

我有一个常量列表(我将它们用作枚举),一些是定义语句,有些只是全局变量.

我想在哪里将它们放在MVC框架中,以便我可以将它们用于我的模型和需要引用它的控制器?

我宁愿不把它粘在config/constants.php中,因为除了这个模型和使用它的控制器之外不应该调用它们.

编辑1:澄清

更具体地说,我有我的message_model模型,它有一堆我需要存储的常量message_model_constants.php.我应该放在哪里message_model_constants.php,是否有一种方法让控制器自动包含它,message_model当message_model不是(我不希望它)自动加载时加载.

编辑2:

除了我使用模型时,我真的不想自动加载常量

php codeigniter

5
推荐指数
2
解决办法
9626
查看次数

如何使用CodeIgniter从另一个模块加载模型

我使用带有CodeIgniter的HMVC扩展,我有2个模块

modules/frontpage
  -- controllers
    frontpage.php ( <- this controller needs to load the person model)
  -- models
  -- views
modules/person
  -- controllers
  -- models
    person_model.php ( defines Person_Model extends Model )
  -- views
Run Code Online (Sandbox Code Playgroud)

$this->load->model('person_model')在frontpage控制器中使用似乎只加载包含在同一模块中的全局或模型(frontpage模型).

这里有CodeIgniter专家吗?

model module codeigniter

5
推荐指数
1
解决办法
9421
查看次数

如何在PHP中解析HTML以进行缩小?

我正在寻找一种算法来压缩我用PHP编写的CMS的HTML输出,用CodeIgniter框架编写.

我想试图任何尖括号之间除去空白,除 <script>,<pre>以及<style>元件和简单地忽略为了简化的那些元素.我应该澄清这是连续标签之间的空白,它们之间没有文字.

我应该如何解析HTML以找到我想要删除的空格?

编辑:要开始,我想删除不在<pre>标签中的所有制表符.这可以用正则表达式完成,我敢肯定,但有哪些替代方案?

html php codeigniter html-parsing

5
推荐指数
2
解决办法
749
查看次数

在运行时更改时,表单验证会忽略语言

我正在使用CodeIgniter来构建多语言Web应用程序.我在/system/languages/文件夹下有英语和其他语言,我创建了一个模型,负责在运行时更改工作语言.

默认情况下,CodeIgniter使用法语定义 /application/config/config.php

$config['language'] = 'french';

之后,根据URI段,模型会相应地更改语言,简化示例如下:

class multilang extends CI_Model {
    public function __construct() {
        parent::__construct();
        if ($this->uri->segment(1) == 'en') {
            $this->config->set_item('language', 'english');
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

此模型是自动加载设置下列出的第一个模型/application/config/autoload.php,我可以通过调用以下方式确认语言确实已动态更改:

echo $this->config->item('language');

但是,内置表单验证库不考虑更改的语言,而只显示来自设置文件/application/config/config.php中硬编码的语言的错误消息,在本例中为French.

起初我假设这是因为表单验证是在multilang模型之前加载的.为了确保首先加载模型,我修改了表单验证构造函数以在之前的任何其他内容之前加载模型:

public function __construct($rules = array())
{
    $this->CI =& get_instance();
    $this->CI->load->model('multilang');
    // normal code after....
}
Run Code Online (Sandbox Code Playgroud)

这确保在表单验证之前加载模型.不幸的是,这还不够,表单验证在运行时更改时仍会忽略语言.谁知道为什么会这样?

谢谢.

multilingual codeigniter

5
推荐指数
1
解决办法
206
查看次数

在Codeigniter中编写模型代码的最佳方法是什么

关于在codeigniter中使用哪种技术来编写模型,我非常困惑.

我搜索了很多,发现了各种程序员使用的各种方法.请指导我使用codeigniter编写Model Class的最佳方法.

几个例子;

  • 有些在Method签名中使用长参数

     function insert_data($name, $address, $email, $....,$...,$..)
    
    Run Code Online (Sandbox Code Playgroud)

    其他人只需使用以下内容并在模型中写下所有帖子代码.

    function insert()
    { 
    $name= $this->input->post('var1');
    $name= $this->input->post('var1');
    $name= $this->input->post('var1');
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 有些为每个表创建不同的模型,而有些只写很少的模型..

    而且不同开发人员之间存在更多矛盾,我对使用哪种技术编写更高效的行业标准代码感到困惑.

    请指导我非常感谢

php codeigniter

5
推荐指数
1
解决办法
2487
查看次数

在Codeigniter中调用未定义的函数ibase_connect()

我无法连接到firebird的本地银行.

因为我在php.ini中启用了以下扩展但没有得到任何结果.

延长= php_interbase.dll

扩展= "interbase.so"

延长= php_pdo_firebird.dll

我也做过interbase.so下载文件并将其复制到文件夹:

/选择/ LAMPP/lib中/ PHP /分机/无调试非ZTS-20131226 /

我正在使用:

  • XAMPP 5.6.8/PHP 5.6.8(64位)
  • Linux 14.04 LTS(64位)

我的文件database.php

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'SYSDBA',
    'password' => 'masterkey',
    'database' => 'localhost://home//ronald//fire//DEMO.GDB',
    // 'port' => '3050',
    'dbdriver' => 'ibase',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE, …
Run Code Online (Sandbox Code Playgroud)

php firebird codeigniter

5
推荐指数
1
解决办法
7145
查看次数

获取MYSQL中某些列为null的表中的值

Video
-------
id
source_low
source_med
source_high

Source
--------
id
duration
thumbnail
Run Code Online (Sandbox Code Playgroud)

视频项目可以包含至少1个或最多3个源(源低,源med,源高).

这个想法与youtube相同,这意味着视频记录可以包含多种质量.因此,当我返回持续时间/缩略图时,我想检查哪个源存在并返回其中一个.

例如,如果视频有source_low或source_med,这意味着source_low和source_med有持续时间和缩略图,那么我只需要返回其中一个.

Codeigniter语法:

  $this->db->select('v.*, sl.duration, sm.duration as duration_m, sh.duration as duration_h, sl.thumbnail, sm.thumbnail as thumbnail_m, sh.thumbnail as thumbnail_h');
        $this->db->from('video as v');
        $this->db->join('source as sl', 'v.source_low = sl.video_id', 'left');
        $this->db->join('source as sm', 'v.source_med = sm.video_id', 'left');
        $this->db->join('source as sh', 'v.source_high = sh.video_id', 'left');
        $this->db->group_by('v.id');
Run Code Online (Sandbox Code Playgroud)

SQL(缩略图与获取的方式相同):

SELECT v.*, sl.duration, sm.duration as duration_sm, sh.duration as duration_sh
    FROM video as v
    LEFT JOIN source as sl ON (v.source_low = sl.video_id) …
Run Code Online (Sandbox Code Playgroud)

php mysql sql database codeigniter

5
推荐指数
1
解决办法
117
查看次数

CodeIgniter - 如何将值从视图传递到控制器?

我想将我从javascript中获取的值传递给控制器​​.但我不使用任何功能.我只想访问控制器中视图中的值.我有以下观点.

<select id="selected_year" name="selected_year" data-live-search="true" style="margin-left: 27px;" >           
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
<option value="2021">2021</option>
<option value="2022">2022</option>
<option value="2023">2023</option>
<option value="2024">2024</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我使用以下javascript获取下拉值.

<script type="text/javascript">
    $("#selected_year").live('change', function() {
        var selected_year = $(this).attr("value");

       alert(selected_year);
       window.location.reload(); 

    });
</script>
Run Code Online (Sandbox Code Playgroud)

我想把我从上面的javascript中获得的值传递给控制器​​.有可能吗?

javascript php codeigniter

5
推荐指数
1
解决办法
1090
查看次数

Codeigniter 3.0.0 - 找不到错误404页面

这是我的第一个php框架.我的控制器中有一个php文件,它是posts.php但是当我尝试运行localhost/codeigniter/index.php/posts时,它显示错误404

.htaccess在应用程序文件夹中

<IfModule authz_core_module>
Require all denied
</IfModule>
<IfModule !authz_core_module>
Deny from all
</IfModule>
Run Code Online (Sandbox Code Playgroud)

autoload.php

$autoload['libraries'] = array('database');
$autoload['helper'] = array('url');
Run Code Online (Sandbox Code Playgroud)

config.php文件

$config['base_url'] = 'http://localhost/codeigniter/';
$config['index_page'] = 'index.php';
Run Code Online (Sandbox Code Playgroud)

routes.php文件

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
Run Code Online (Sandbox Code Playgroud)

模型文件夹中的post.php

    class Post extends CI_Model{

    function get_posts($num = 20, $start = 0){

        //$sql = "SELECT * FROM users WHERE active=1 ORDER BY date_added DESC LIMIT 0,20;";
        $this->db->select()->from('posts')->where('active', 1)->order_by('date_added', 'desc')->limit(0, 20);
        $query=$this->db->get();
        return $query->result_array();

    }

}
Run Code Online (Sandbox Code Playgroud)

控制器文件夹中的posts.php

class Posts extends CI_Controller{

    function index(){ …
Run Code Online (Sandbox Code Playgroud)

php model-view-controller codeigniter

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

PHP Codeigniter 3 MySQL服务器已经消失

我正在为Codeigniter中的PHP脚本运行Cron Job来转换上传的视频.一切都执行没有任何问题,但一旦它将数据插入数据库,我收到此错误:

Error Number: 2006 MySQL server has gone away

该过程基本上转换视频,如果成功,则从视频创建缩略图和海报,然后将视频数据插入数据库.我试过添加$this->db->reconnect();我的模型功能.这是功能:

function add_video($data)
{
  //BECASUE THE CONVERSION TAKES SO LONG WE NEED TO RECONNECT TO THE DATABASE AFTER EACH EXEC
  $this->db->reconnect(); 

  $this->db->insert('video_uploads', $data);
}
Run Code Online (Sandbox Code Playgroud)

这不起作用我仍然收到错误.如果我$this->db->reconnect();在每次exec收到这些错误后添加:

Message: mysql_ping() expects parameter 1 to be resource, boolean given

Message: mysql_real_escape_string() expects parameter 2 to be resource, boolean given

就像我们使用FFMPEG转换我的视频一样.

所有执行完成后如何保持连接活动,以便将数据插入数据库?

编辑:这是Codeigniter的$this->db->reconnect();功能:

public function reconnect()
{
    if (mysql_ping($this->conn_id) === FALSE)
    {
        $this->conn_id = FALSE;
    }
}
Run Code Online (Sandbox Code Playgroud)

php mysql codeigniter

5
推荐指数
1
解决办法
7041
查看次数