我想在我的codeigniter应用程序中生成条形码,当我包含Zend库和渲染的条形码时它没有呈现,它给出的错误是
The image …cannot displayed its contain errors
当我在新的codeigniter项目中使用相同的代码和库时,它可以正常工作并成功生成条形码.
为什么会这样?
我的代码是:
function gen_barcode()
{
//I'm just using rand() function for data example
$temp = rand(10000, 99999);
$this->set_barcode($temp);
}
private function set_barcode($code)
{
//load library
$this->load->library('zend');
//load in folder Zend
$this->zend->load('Zend/Barcode');
////generate barcode
Zend_Barcode::render('code128', 'image', array('text'=>$code), array());
}
解决方法:
如果你从这里得到它https://github.com/desta88/Codeigniter-Barcode-Generator-Zend-Library
1:在zend库中从CI_Zend中删除CI
文件名Zend.php
<?php if( ! defined('BASEPATH')) exit('No direct script access allowed');
class Zend { // remove CI_
public function __construct($class = NULL)
{
ini_set('include_path',
ini_get('include_path'). PATH_SEPARATOR. APPPATH. 'libraries');
if($class)
{
require_once(string) $class.'.php'; //fixed CI 3 issue by lilsammy
log_message('debug', "Zend Class $class Loaded");
}else
{
log_message('debug', "Zend Class Initialized");
}
}
public function load($class)
{
require_once(string) $class.'.php'; //fixed CI 3 issue by lilsammy
log_message('debug', "Zend Class $class Loaded");
}
}
然后在控制器上应该看起来像
文件名:Zend_c.php //就像测试一样命名.
<?php
class Zend_c extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->library('zend');
$this->zend->load('zend/barcode');
}
public function index() {
$temp = rand(10000, 99999);
echo $this->set_barcode($temp);
}
private function set_barcode($code)
{
return Zend_Barcode::render('code128', 'image', array('text'=>$code), array());
}
}
工作证明