首页 > 解决方案 > Codeigniter 4:从 BaseController 获取值到自定义助手

问题描述

似乎get_instance()不再在 Codeigniter 4 中工作。但我需要从 BaseController 获得一些价值到我的 custom_helper。这是我的代码片段:

基本控制器.php

<?php namespace App\Controllers;
class BaseController extends Controller
{
 protected $helpers = ['custom'];
 public function initController(...) {
  parent::initController(...);

   $myconfig = config('MyConfig');
   $this->languages = $myconfig->languages;
   $this->selected_lang = $myconfig->site_lang;
   $lang_segment = $this->request->uri->getSegment(1);
   foreach ($this->languages as $lang) {
    if ($lang_segment == $lang->short_form) {
      $this->selected_lang = $lang;
      $this->lang_base_url = base_url() . $lang->short_form . "/";
    }
   }
 }
}
// Here I need to pass ($this->selected_lang) value to my custom_helper.

custom_helper.php

<?php
 if (!function_exists('trans')) {
    function trans($string)
    {
        $language_translations = get_translation_array($this->selected_lang->id);
        // --> Here I want to get ($this->selected_lang->id) value from BaseController.
        
        if (!empty($language_translations[$string])) {
            return $language_translations[$string];
        }
        return "";
    }
 }
 function get_translation_array($land_id)
 {
    .......
 }

我不确定这是否可能!我是CI4的新手。请建议是否有任何解决方案。提前致谢。

标签: codeignitercodeigniter-4

解决方案


而不是调用 BaseController 你应该在助手中做所有事情

if (!function_exists('trans')) {
    function trans($string)
    {
        $myconfig = config('MyConfig');
        $languages = $myconfig->languages;
        $selected_lang = $myconfig->site_lang;

        $language_translations = get_translation_array($selected_lang->id);
        
        if (!empty($language_translations[$string])) {
            return $language_translations[$string];
        }
        return "";
    }
 }

虽然我不知道你在做什么,但如果不再引起我的注意,我希望这会对你有所帮助


推荐阅读