Пользовательские файлы конфигурации - Codeigniter - PullRequest
4 голосов
/ 28 февраля 2012

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

я создал его в каталоге / config и код указан ниже:

<?php

$config = Array(
            'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.googlemail.com',
            'smtp_port' => 465,
            'smtp_user' => 'mertmetinbjk@gmail.com',
            'smtp_pass' => '*************',
            'mailtype' => 'html'
        );




        $this->load->library('email', $config);
        $this->email->set_newline("\r\n");

?>

и в порядкечтобы использовать его, я вызываю в моем kayit.php, который является конструктором контроллера

 $this->config->load('email'); 

Однако я получаю такую ​​ошибку enter image description here

Ответы [ 7 ]

6 голосов
/ 28 февраля 2012

Я цитирую из руководства:

Если вы предпочитаете не устанавливать предпочтения с помощью описанного выше метода, вы можете вместо этого поместить их в файл конфигурации.Просто создайте новый файл с именем email.php, добавьте массив $ config в этот файл.Затем сохраните файл в config / email.php

Конфигурационный файл - это просто ARRAY (с именем $ config), и только потому, что он не имеет доступа к ссылке $ this.Используемый код (например, загрузка библиотеки) должен быть внутри контроллера , , а не внутри файла конфигурации!

4 голосов
/ 28 февраля 2012

Поскольку этот файл конфигурации предназначен для встроенного класса электронной почты , он будет автоматически загружен, если он называется config/email.php.

Если вы предпочитаете не устанавливать предпочтения с помощью вышеуказанного метода, вы можете вместо этого поместите их в файл конфигурации. Просто создайте новый файл с именем email.php, добавьте $config array в этот файл. Затем сохраните файл на config/email.php, и он будет использоваться автоматически. Ты не будешь необходимо использовать функцию $this->email->initialize(), если вы сохраните настройки в конфигурационном файле.

Вы не можете (зачем вам) вызывать $this->load внутри файла конфигурации.

Кроме того, вы не можете объявить конфигурационные файлы подобным образом. $config = Array(, вы перезаписываете все остальные значения в $config. Вы должны объявить каждую опцию индивидуально.

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_port'] = 465;
$config['smtp_user'] = 'mertmetinbjk@gmail.com';
$config['smtp_pass'] = '*************';
$config['mailtype']= 'html';
4 голосов
/ 28 февраля 2012

Вам необходимо создать файл с именем email.php в папке ./application/config/ и в этом файле создать массив с вашими значениями.В вашем случае это должно быть

$config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'mertmetinbjk@gmail.com',
        'smtp_pass' => '*************',
        'mailtype' => 'html'
    );

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

2 голосов
/ 09 декабря 2014

в вашей конфигурации /config/email.php:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'mertmetinbjk@gmail.com',
        'smtp_pass' => '*************',
        'mailtype' => 'html'
    );

в вашем контроллере:

$this->config->load('email');
var_dump((array)$this->config); //show all the configs including those in the email.php
1 голос
/ 28 февраля 2012

Смотри Codeignitor userGuide http://codeigniter.com/user_guide/libraries/email.html

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);


$this->load->library('email');

$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');

$this->email->subject('Email Test');
$this->email->message('Testing the email class.');

$this->email->send();

echo $this->email->print_debugger();
1 голос
/ 28 февраля 2012

Вы не можете создать экземпляр метода в файле конфигурации, потому что он не загрузил экземпляр CodeIgniter.

0 голосов
/ 30 мая 2013

сначала вы можете удалить файл email.php в config / email.php .после попробуйте свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...