JSON

CI框架7点开发技巧(2)

字号+ 作者:H5之家 来源:H5之家 2015-10-05 09:07 我要评论( )

其实安装Doctrine不是那么难,就像安装插件一样。然后一旦安装成功,你的model类将需要继承Doctrine基类,而不是继承ci的model类。这将会完全改变model层的工作方式。你建立的对象将会有持久的数据库连接并且也将能

其实安装Doctrine不是那么难,就像安装插件一样。然后一旦安装成功,你的model类将需要继承Doctrine基类,而不是继承ci的model类。这将会完全改变model层的工作方式。你建立的对象将会有持久的数据库连接并且也将能有其他对象的数据库关系


class Hello extends Controller { function __construct() { if (isset($_SERVER['REMOTE_ADDR'])) { die('Command Line Only!'); } parent::Controller(); } // ... }

按照以下几步:

1. 建立文件夹:application/plugins

2. 创建文件夹:application/plugins/doctrine

3. 下载文件(1.2版本的)

4. 从Doctrine复制“lib”文件夹到“application/plugins/doctrine”

5. 创建“application/plugins/doctrine_pi.php”

 

// system/application/plugins/doctrine_pi.php  

 

// load Doctrine library  

require_once APPPATH.'/plugins/doctrine/lib/Doctrine.php';  

 

// load database configuration from CodeIgniter  

require_once APPPATH.'/config/database.php';  

 

// this will allow Doctrine to load Model classes automatically  

spl_autoload_register(array('Doctrine', 'autoload'));  

 

// we load our database connections into Doctrine_Manager  

// this loop allows us to use multiple connections later on  

foreach ($db as $connection_name => $db_values) {  

 

    // first we must convert to dsn format  

    $dsn = $db[$connection_name]['dbdriver'] .  

        '://' . $db[$connection_name]['username'] .  

        ':' . $db[$connection_name]['password'].  

        '@' . $db[$connection_name]['hostname'] .  

        'http://www.phpddt.com/' . $db[$connection_name]['database'];  

 

    Doctrine_Manager::connection($dsn,$connection_name);  

}  

 

// CodeIgniter's Model class needs to be loaded  

require_once BASEPATH.'/libraries/Model.php'; 

 

// telling Doctrine where our models are located 

Doctrine::loadModels(APPPATH.'/models');  

 

然后,编辑‘application/config/autoload.php’自动加载Doctrine插件

$autoload['plugin'] = array('doctrine');

 

你也要确定在“application/config/database.php的数据库配置好了,”

 

 

(6)运行多个站点

目标:

这个技巧将会使安装一个codeigniter就能运行多个站点成为可能,每个站点有它自己的application文件夹,但是他们共享这相同的系统文件夹。

 

技巧:

安装ci在服务器的任何位置。然后将application文件夹从system文件夹拿出来。放在外面,请看上面的图片。

现在复制index.php文件到每个站点的跟目录下面(即图中的application_site1、application_site2等)

然后编辑它:

在第26行,给出system文件夹的完整路径

$system_folder = dirname(__FILE__) . '../codeigniter/system';  

 

在第43行,给出application文件夹的文章路径

$application_folder = dirname(__FILE__) . '../application_site1';  

现在你就能使用独立的application文件夹来建立不同的站点了,而只是共享同一个system文件夹

这里有一个相似的操作在ci用户手册

 

(7)允许所有类型的文件上传

目标:进行文件上传时,经常遇到文件类型错误!

$this->load->library('upload');   $this->upload->set_allowed_types('jpg|jpeg|gif|png|zip');  

如果你没有指明特定的上传类型,你将会从ci那里得到一个错误信息"Youhave not specified any allowed file types."

所有,默认的方式,将没有办法允许所有的文件上传。我们需要做一些小的改变来处理这个限制。我们设定“*”将能够运行所有类型的文件上传。

$this->load->library('upload');   $this->upload->set_allowed_types('*');  

 

技巧:

我们需要修改上传文件类。

创建文件:application/librarys/My_upload.php


class MY_Upload extends CI_Upload { function is_allowed_filetype() { if (count($this->allowed_types) == 0 OR ! is_array($this->allowed_types)) { $this->set_error('upload_no_file_types'); return FALSE; } if (in_array("*", $this->allowed_types)) { return TRUE; } $image_types = array('gif', 'jpg', 'jpeg', 'png', 'jpe'); foreach ($this->allowed_types as $val) { $mime = $this->mimes_types(strtolower($val)); // Images get some additional checks if (in_array($val, $image_types)) { if (getimagesize($this->file_temp) === FALSE) { return FALSE; } } if (is_array($mime)) { if (in_array($this->file_type, $mime, TRUE)) { return TRUE; } } else { if ($mime == $this->file_type) { return TRUE; } } } return FALSE; } }

转载请注明地址: 尊重他人劳动成果就是尊重自己!

CodeIgniter框架

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评