CodeIgniter ve JS kütüphaneleri

3 Cevap php

Yani şey bu tür az acemi değilim - Ben sadece CodeIgniter ile geliştirmeye başladı ve ben javascript kütüphaneleri entegre çalışıyorum. Ancak, tüm istekleri / index.php / zor dosyaları dahil etmek için yapar, bunun önünde tutturdu olsun ki benim. Htaccess kurdunuz. CSS için ben sadece bu soruna olsun ve zaten hızlı olan inline sahip olmak dahil bir php kullanmak. Ama bu javascript kütüphaneleri için kötü bir fikir gibi görünüyor.

Herhangi bir düşünce? Ben sadece bir index.php / klasör oluşturun ve orada sopa gerekir?

Thanks!
Mala

3 Cevap

Sen sadece buna bir koşul ekleyerek yeniden yazma kuralı önleyebilirsiniz:

RewriteCond $1 !^(index\.php|images|scripts|styles|robots\.txt)

Sonra docroot içinde vb tüm komut, görüntüleri, koyabilirsiniz.

Apache Rewrite docs daha fazla bilgi için bkz.

Ben aslında benim harici tüm dosyaları getirmek için bir kaynak denetleyicisi kullanabilirsiniz:

 class Resources extends Controller
{
	public function __construct()
	{
		parent::__construct();
	}

	public function javascript()
	{
		$arr = func_get_args();
		if( sizeof( $arr ) == 0 )
		{
			show_404();
			return;
		}
		if( is_numeric( $arr[ sizeof( $arr ) - 1 ] ) )
		{
			array_pop( $arr );
		}
		$name = implode( "/", $arr );
		$this->load->view( "javascript", array( "importscript" => $name ) );
	}
	public function css()
	{
		$arr = func_get_args();
		if( sizeof( $arr ) == 0 )
		{
			show_404();
			return;
		}
		if( is_numeric( $arr[ sizeof( $arr ) - 1 ] ) )
		{
			array_pop( $arr );
		}
		$name = implode( "/", $arr );
		$this->load->view( "css", array( "importscript" => $name ) );
	}
	public function image()
	{
		$arr = func_get_args();
		if( sizeof( $arr ) == 0 )
		{
			show_404();
			return;
		}
		if( is_numeric( $arr[ sizeof( $arr ) - 1 ] ) )
		{
			array_pop( $arr ); 
			// if the last item is a number, that means it was 
			// automatically generated to prevent caching
		}
		$name = implode( "/", $arr );
		$this->load->view( "images", array( "importscript" => $name ) );
	}
}

Farklı görüş, tüm böyle bir şey vardır:

$import = dirname( __FILE__ ) . "/javascript/$importscript";
if( !showjs( $import ) && is_dir( $import ) )
{
	if( !showjs( "$import/$importscript" ) )
	{
		show_404();
	}
}

function showjs( $imp )
{
	if( is_file( "$imp.js" ) )
	{
		header('Content-type: application/javascript');
		echo "/*----- Imported into PHP so JavaScript can all be dynamically declared -----*/\n\n";
		echo file_get_contents( "$imp.js" );
		return true;
	}
	elseif( is_file( "$imp.php" ) )
	{
		header('Content-type: application/javascript');
		echo "/*----- Imported into PHP so JavaScript can all be dynamically declared -----*/\n\n";
		include_once( "$imp.php" );
		return true;
	}
	return false;
}

Gördüğünüz gibi, denetleyici görünümüne dosya adını geçirir. Js dosyası veya importscript değişkeni ile ilişkili bir php dosyası varsa görünümü sonra görür. Varsa, bu başlıkları ayarlar ve sonra dosyaları gösterir.

Belki bir şey Seks için öyle değilim ama neden sadece mutlak URL'ler ile javascript kütüphaneleri dahil değil

<script type="text/javascript" src="/js/javascript.js"></script>

CSS ile aynı

<link rel="stylesheet" type="text/css" href="/css/main.css">

Kullandığınız doc kökünden başlamak durumunda / daha sonra herhangi bir sorun dosyaları bulma olmayacaktır.