Как автоматически загружать вспомогательные функции в codeigniter 4

Я только что загрузил CodeIgniter 4 с их официального GitHub. Они сильно изменились с CodeIgniter 3. Я хочу использовать base_url() функция в представлении и для этого вам нужно загрузить URL помощник и в CodeIgniter 3 я автоматически загрузил его в config/autoload.php файл. Но теперь они полностью изменили структуру config/autoload.php файл в CodeIgniter 4, и это меня очень смущает.

Вы все еще можете использовать base_url() функционируйте в ваших представлениях в CodeIgniter 4, используя приведенный ниже код в конструкторе контроллера helper('url');

Если кто-нибудь, кто использовал CodeIgnter 4, знает, как автоматически загружать вспомогательные функции, такие как url, путем изменения config/autoload.php файл, пожалуйста, помогите мне.

6 ответов

Решение

CodeIgnter 4 в настоящее время находится в стадии разработки, поэтому многие функции по-прежнему недоступны. Ответ: вы не можете автоматически загружать помощники или библиотеки в файле autoload.php в codeigniter 4.

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

из Codeigniter 4 Документация:

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

https://bcit-ci.github.io/CodeIgniter4/general/helpers.html

Добавьте своего помощника в массив в BaseController.php файл вроде этого:

protected $helpers = ["form"] // BaseController.php:29;

Просто добавьте имя помощника (ов), которого вы хотите загрузить

protected $helpers = [] в

/app/Controllers/BaseController.php

CodeIgniter4 загрузит эти помощники автоматически.

Например:

      class BaseController extends Controller
{
    /**
     * An array of helpers to be loaded automatically upon
     * class instantiation. These helpers will be available
     * to all other controllers that extend BaseController.
     *
     * @var array
     */
    protected $helpers = ['cookie','date']; // <=== this

Для будущего использования

Так как в автозагрузке нет autoload.php Вы должны загрузить все вспомогательные файлы самостоятельно. В отличие от глобальной загрузки в CodeIgniter 3.

Как загрузить

public function FunctionName()
{
    helper(['form', 'validation']); # before retun to view.
    #rest of your code
}

Нужно ли загружать это в каждый метод?

Да. Поскольку я играю вокруг, я не могу загрузить вспомогательный файл глобально.(2018-2-07)

Шаг 1

Создайте помощника в приложении / помощниках. Пример: alert_helper.php, ДОЛЖЕН заканчиваться на _helper

Шаг 2

Загрузите помощник для конструктора или метода. helper(['alert']);

Шаг 3

Используйте помощника

СДЕЛАННЫЙ

ОБНОВЛЕНИЕ CodeIgniter 4.3+

CodeIgniter 4.3.0 наконец-то добавил эту функцию. Просто отредактируйте файл app/Config/Autoload.php и добавьте необходимые помощники глобально.

      public $helpers = ['repository_helper', 'serializer_helper'];

https://codeigniter.com/user_guide/general/helpers.html#auto-loading-helpers

Другие вопросы по тегам