2013-09-25 2 views
3

У меня возникли проблемы с получением моего sparks установки работать с моим codeigniter установитьПроблемы до наладки CodeIgniter с искрами и активной записью

вот шаги, которые я взял, которые были следующими:

  1. I пошел к своему корню из моей папки codeigniter проекта через мой PHPCLI установить искры с помощью следующей команды

    php -r "$(curl -fsSL http://getsparks.org/go-sparks)" 
    
  2. я установил активную библиотеку записи с помощью команды искровой ниже

    php tools\spark install -v0.0.2 php-activerecord 
    

2a. эта команда дала мне следующую структуру папок:

-application 
-sparks 
    -php-activerecord 
     -0.0.2 
     -config 
     -variables 
     -vendor 
-system 
-tests 
-tools 
    -lib 
     -spark 
     -sparktypes 
    -test 
-user_guide 

2b. эта команда генерирует sparks, содержащий php active record папку, макияж необходимые компоненты php-activerecord, команда с помощью генерирует MY_Loader.php файл, который выглядит как этот

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
/** 
* Sparks 
* 
* An open source application development framework for PHP 5.1.6 or newer 
* 
* @package  CodeIgniter 
* @author  CodeIgniter Reactor Dev Team 
* @author  Kenny Katzgrau <[email protected]> 
* @since  CodeIgniter Version 1.0 
* @filesource 
*/ 

/** 
* Loader Class 
* 
* Loads views and files 
* 
* @package  CodeIgniter 
* @subpackage Libraries 
* @author  CodeIgniter Reactor Dev Team 
* @author  Kenny Katzgrau <[email protected]> 
* @category Loader 
* @link  http://codeigniter.com/user_guide/libraries/loader.html 
*/ 
class MY_Loader extends CI_Loader 
{ 
    /** 
    * Keep track of which sparks are loaded. This will come in handy for being 
    * speedy about loading files later. 
    * 
    * @var array 
    */ 
    var $_ci_loaded_sparks = array(); 

    /** 
    * Is this version less than CI 2.1.0? If so, accomodate 
    * @bubbafoley's world-destroying change at: http://bit.ly/sIqR7H 
    * @var bool 
    */ 
    var $_is_lt_210 = false; 

    /** 
    * Constructor. Define SPARKPATH if it doesn't exist, initialize parent 
    */ 
    function __construct() 
    { 
     if(!defined('SPARKPATH')) 
     { 
      define('SPARKPATH', 'sparks/'); 
     } 

     $this->_is_lt_210 = (is_callable(array('CI_Loader', 'ci_autoloader')) 
           || is_callable(array('CI_Loader', '_ci_autoloader'))); 

     parent::__construct(); 
    } 

    /** 
    * To accomodate CI 2.1.0, we override the initialize() method instead of 
    * the ci_autoloader() method. Once sparks is integrated into CI, we 
    * can avoid the awkward version-specific logic. 
    * @return Loader 
    */ 
    function initialize() 
    { 
     parent::initialize(); 

     if(!$this->_is_lt_210) 
     { 
      $this->ci_autoloader(); 
     } 

     return $this; 
    } 

    /** 
    * Load a spark by it's path within the sparks directory defined by 
    * SPARKPATH, such as 'markdown/1.0' 
    * @param string $spark The spark path withint he sparks directory 
    * @param <type> $autoload An optional array of items to autoload 
    * in the format of: 
    * array (
    *  'helper' => array('somehelper') 
    * ) 
    * @return <type> 
    */ 
    function spark($spark, $autoload = array()) 
    { 
     if(is_array($spark)) 
     { 
      foreach($spark as $s) 
      { 
       $this->spark($s); 
      } 
     } 

     $spark = ltrim($spark, '/'); 
     $spark = rtrim($spark, '/'); 

     $spark_path = SPARKPATH . $spark . '/'; 
     $parts  = explode('/', $spark); 
     $spark_slug = strtolower($parts[0]); 

     # If we've already loaded this spark, bail 
     if(array_key_exists($spark_slug, $this->_ci_loaded_sparks)) 
     { 
      return true; 
     } 

     # Check that it exists. CI Doesn't check package existence by itself 
     if(!file_exists($spark_path)) 
     { 
      show_error("Cannot find spark path at $spark_path"); 
     } 

     if(count($parts) == 2) 
     { 
      $this->_ci_loaded_sparks[$spark_slug] = $spark; 
     } 

     $this->add_package_path($spark_path); 

     foreach($autoload as $type => $read) 
     { 
      if($type == 'library') 
       $this->library($read); 
      elseif($type == 'model') 
       $this->model($read); 
      elseif($type == 'config') 
       $this->config($read); 
      elseif($type == 'helper') 
       $this->helper($read); 
      elseif($type == 'view') 
       $this->view($read); 
      else 
       show_error ("Could not autoload object of type '$type' ($read) for spark $spark"); 
     } 

     // Looks for a spark's specific autoloader 
     $this->ci_autoloader($spark_path); 

     return true; 
    } 

    /** 
    * Pre-CI 2.0.3 method for backward compatility. 
    * 
    * @param null $basepath 
    * @return void 
    */ 
    function _ci_autoloader($basepath = NULL) 
    { 
     $this->ci_autoloader($basepath); 
    } 

    /** 
    * Specific Autoloader (99% ripped from the parent) 
    * 
    * The config/autoload.php file contains an array that permits sub-systems, 
    * libraries, and helpers to be loaded automatically. 
    * 
    * @param array|null $basepath 
    * @return void 
    */ 
    function ci_autoloader($basepath = NULL) 
    { 
     if($basepath !== NULL) 
     { 
      $autoload_path = $basepath.'config/autoload'.EXT; 
     } 
     else 
     { 
      $autoload_path = APPPATH.'config/autoload'.EXT; 
     } 

     if(! file_exists($autoload_path)) 
     { 
      return FALSE; 
     } 

     include($autoload_path); 

     if (! isset($autoload)) 
     { 
      return FALSE; 
     } 

     if($this->_is_lt_210 || $basepath !== NULL) 
     { 
      // Autoload packages 
      if (isset($autoload['packages'])) 
      { 
       foreach ($autoload['packages'] as $package_path) 
       { 
        $this->add_package_path($package_path); 
       } 
      } 
     } 

     // Autoload sparks 
     if (isset($autoload['sparks'])) 
     { 
      foreach ($autoload['sparks'] as $spark) 
      { 
       $this->spark($spark); 
      } 
     } 

     if($this->_is_lt_210 || $basepath !== NULL) 
     { 
      if (isset($autoload['config'])) 
      { 
       // Load any custom config file 
       if (count($autoload['config']) > 0) 
       { 
        $CI =& get_instance(); 
        foreach ($autoload['config'] as $key => $val) 
        { 
         $CI->config->load($val); 
        } 
       } 
      } 

      // Autoload helpers and languages 
      foreach (array('helper', 'language') as $type) 
      { 
       if (isset($autoload[$type]) AND count($autoload[$type]) > 0) 
       { 
        $this->$type($autoload[$type]); 
       } 
      } 

      // A little tweak to remain backward compatible 
      // The $autoload['core'] item was deprecated 
      if (! isset($autoload['libraries']) AND isset($autoload['core'])) 
      { 
       $autoload['libraries'] = $autoload['core']; 
      } 

      // Load libraries 
      if (isset($autoload['libraries']) AND count($autoload['libraries']) > 0) 
      { 
       // Load the database driver. 
       if (in_array('database', $autoload['libraries'])) 
       { 
        $this->database(); 
        $autoload['libraries'] = array_diff($autoload['libraries'], array('database')); 
       } 

       // Load all other libraries 
       foreach ($autoload['libraries'] as $item) 
       { 
        $this->library($item); 
       } 
      } 

      // Autoload models 
      if (isset($autoload['model'])) 
      { 
       $this->model($autoload['model']); 
      } 
     } 
    } 
} 
  1. я изменить мой autoload.php включить PHP активную запись, как показано ниже

    $autoload['sparks'] = array('php-activerecord/0.0.2'); 
    

Когда я запускаю свой сайт-кодогенератор, я получаю следующую команду ror

A PHP Error was encountered 

Severity: Notice 

Message: Use of undefined constant EXT - assumed 'EXT' 

Filename: core/MY_Loader.php 

Line Number: 174 

Backtrace: 

File: C:\xampp\htdocs\orm\application\core\MY_Loader.php 
Line: 174 
Function: _exception_handler 

File: C:\xampp\htdocs\orm\application\core\MY_Loader.php 
Line: 154 
Function: ci_autoloader 

File: C:\xampp\htdocs\orm\application\core\MY_Loader.php 
Line: 67 
Function: initialize 

File: C:\xampp\htdocs\orm\index.php 
Line: 274 
Function: require_once 

Мне любопытно, что может быть причиной этой ошибки? Пожалуйста, дайте мне знать, есть ли какая-либо другая конфигурация, которую я пропускаю, или если это ошибка, которую я сделал.

+0

я заменил $ autoload_path = $ basepath.'config/autoload'.EXT; – user729229

ответ

13

EXT определяется в вашем корневом файле index.php.

// The PHP file extension 
// this global constant is deprecated. 
define('EXT', '.php'); 

Посмотрите, все еще есть или нет?

+0

ошибки ушли спасибо, но у меня все еще есть проблема с получением orm для работы – user729229

+0

Вы правы, но я бы добавил это определение в файл application/config/constants.php. –

0

В случае, если константа не существует, вы также можете определить autoload.php без использования константы.

0

Я знаю, что это старое сообщение, но, надеюсь, это сэкономит кому-то время ... У меня была такая же проблема, и вышеупомянутое исправление не сработало. Я, наконец, исправил проблему в файле htaccess, удалив RewriteBase, хотя я не уверен, почему это вызвало проблему в первую очередь.

просто закомментировать строку следующим образом:

RewriteBase/

в

#RewriteBase/
Смежные вопросы