Переменные Codeigniter - PullRequest
       1

Переменные Codeigniter

0 голосов
/ 20 июня 2011

Я начинающий программист.Я использую версию 2.0.2 с локальным сервером (php 5.3), и у меня есть стартовый контроллер с таким кодом (просто для тестирования, очевидно):

<?php  

class Start extends CI_Controller
{
    var $base;
    function _construct()
    {
        parent::_construct();
        $this->base = $this->config->item('base_url');
    }   
    function hello()
    {
        $data['base'] = $this->base;
        print_r ($data);
    }


}

Когда я перехожу к функции приветствия,$data['base'] элемент массива пуст.Почему так должно быть, если функция конструкции заполнила его base_url из файла конфигурации?

Кажется, что переменная $base недоступна вне функции конструкции, но я не могу понять, почему или как это исправить.Кто-нибудь может посоветовать, пожалуйста?

Ответы [ 3 ]

4 голосов
/ 20 июня 2011

Ваш конструктор должен быть __construct() (2 подчеркивания).

function __construct()
{
   parent::__construct();
   $this->base = $this->config->item('base_url');
}

Кроме того, как уже упоминали другие люди, если вы загрузите url_helper, вы можете получить base_url, вызвав base_url().

$this->load->helper('url');
$this->base = base_url();
1 голос
/ 20 июня 2011

Используйте это так:

class Start extends CI_Controller
{
 private $base = ''; 
 function _construct()
 {
    parent::_construct();

    $this->base = $this->config->item('base_url');
 }

 function hello()
 {
    $data['base'] = $this->base;
    print_r ($data);
 }
}

Или в настройках autoload.php:

$autoload['helper'] = array('url');

и затем вы можете использовать base_url (); везде в вашем коде.

1 голос
/ 20 июня 2011

Знаете ли вы, что вы можете сделать

$this->load->helper('url');
$base = base_url();

Или даже в виде:

<?php echo base_url(); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...