ใช่ คุณสามารถใช้ผู้แต่งเพื่อติดตั้งโมดูล/โปรเจ็กต์เฉพาะของ Laravel ซึ่งเป็นโปรเจ็กต์บุคคลที่สามใน CodeIginter ของคุณ เพียงรวม autoload
ไว้ในไฟล์ `index.php' ที่ด้านบน
// Composer autoload
require_once __DIR__.'/vendor/autoload.php';
ฉันใช้ Eloquent
เป็น ORM ในโค้ดเบส CodeIgniter ของฉัน
สร้าง classmap ไปยังไดเรกทอรีแอปของคุณใน composer.json
"autoload": {
"psr-4": { "YourApp\\": ["application/"] },
ใช้พูดจาไพเราะ
หากต้องการใช้ Eloquent
คุณจะต้องสร้างไลบรารีเพื่อตั้งค่า Eloquent เพื่อใช้งาน
/**
* Capsule setting manager for Illuminate/database
*/
use Illuminate\Database\Capsule\Manager as CapsuleManager;
use Illuminate\Events\Dispatcher;
use Illuminate\Container\Container;
class Capsule extends CapsuleManager {
public function __construct()
{
parent::__construct();
//Loaded by CI
if(function_exists('get_instance')) {
$ci = &get_instance();
$db = new stdClass;
$db = $ci->db;
} else {
require_once __DIR__.'/../config/database.php';
$db = (object) $db['default'];
}
$this->addConnection(array(
'driver' => $db->dbdriver,
'host' => $db->hostname,
'database' => $db->database,
'username' => $db->username,
'password' => $db->password,
'charset' => $db->char_set,
'collation' => $db->dbcollat,
'prefix' => $db->dbprefix,
));
$this->setEventDispatcher(new Dispatcher(new Container));
// Make this Capsule instance available globally via static methods... (optional)
$this->setAsGlobal();
// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
$this->bootEloquent();
}
}
// END Capsule Class
ตอนนี้โหลดไลบรารีอัตโนมัติแล้วคุณจะมีความสวยงาม
ในทำนองเดียวกัน คุณสามารถใช้ MonoLog
สำหรับการบันทึก, Whoops
สำหรับการแสดงข้อผิดพลาด, Formers\Former
สำหรับการสร้างแบบฟอร์ม ฯลฯ
ใช้อ๊ะ
คุณสามารถวางโค้ดนี้ไว้ที่ใดที่หนึ่งหลัง autload
และกำหนดสภาพแวดล้อม CI ใน index.php
ของคุณเพื่อใช้ https://github.com/filp/whoops ไลบรารี
if (ENVIRONMENT == 'development') {
$whoops = new \Whoops\Run;
$whoops->pushHandler(new Whoops\Handler\PrettyPageHandler());
$whoops->register();
}
คุณยังสามารถขยาย CI_Router
เพื่อใช้การกำหนดเส้นทางสไตล์ Laravel ในแอป Code Igniter ของคุณ
เทมเพลตใบมีด
คุณสามารถขยาย CI_Loader
เพื่อใช้เทมเพลต Blade
ใน Code Igniter สร้างไฟล์ใหม่ MY_Loader
ในไดเรกทอรี application/core
ของคุณด้วยรหัสนี้
use Illuminate\Blade\Environment;
use Illuminate\Blade\Loader;
use Illuminate\Blade\View;
class MY_Loader extends CI_Loader {
public function __construct()
{
parent::__construct();
}
public function blade($view, array $parameters = array())
{
$CI =& get_instance();
$CI->config->load('blade', true);
return new View(
new Environment(Loader::make(
$CI->config->item('views_path', 'blade'),
$CI->config->item('cache_path', 'blade')
)),
$view, $parameters
);
}
}
คุณอาจต้องสร้างไฟล์กำหนดค่า blade.php
ในไดเรกทอรี application/config
ของคุณเพื่อจัดเก็บการกำหนดค่าเฉพาะ blade
//config/blade.php
$config['views_path'] = APPPATH . 'views/blade/';
$config['cache_path'] = APPPATH . 'cache/blade/';
ตอนนี้คุณสามารถทำสิ่งนี้ได้ในคอนโทรลเลอร์ของคุณ
class Home extends CI_Controller {
public function index()
{
// Prepare some test data for our views
$array = explode('-', date('d-m-Y'));
list($d, $m, $y) = $array;
// Basic view with no data
echo $this->load->blade('home.index');
// Passing a single value
echo $this->load->blade('home.index')->with('day', $d);
// Multiple values with method chaining
echo $this->load->blade('home.index')
->with('day', $d)
->with('month', $m)
->with('year', $y);
// Passing an array
echo $this->load->blade('home.index', array(
'day' => $d,
'month' => $m,
'year' => $y
));
}
}
person
Ehs4n
schedule
17.01.2016