【问题标题】:CI4 accessing $data in the viewCI4 在视图中访问 $data
【发布时间】:2021-07-23 03:02:28
【问题描述】:

我的控制器中有以下几行;

$this->data['user_time_zone']['user_setting_value'] = 'UTC';
return view('/User_private/Timezone/timezone_update', $this->data);

在我看来,我真的很想像这样访问 UTC 变量;

$user_time_zone->user_setting_value

请问如何重写控制器部分?我试过了;

$this->data['user_time_zone']->user_setting_value = 'UTC' 

但它抱怨一个非对象。

【问题讨论】:

    标签: codeigniter codeigniter-4


    【解决方案1】:

    这是解决方案

    在控制器功能中:

    $this->data['user_time_zone']['user_setting_value'] = 'UTC';
    $data['utc'] = $this->data['user_time_zone']['user_setting_value'];
    return view('/User_private/Timezone/timezone_update', $data);
    

    在视图中:

    <?= $utc ?> or <?php echo $utc; ?>
    

    【讨论】:

    • 谢谢,但不想更改视图。需要更改控制器以匹配现有视图。可能吗?
    【解决方案2】:

    让我们倒过来看看会发生什么。

    如果你需要在你的视图中使用这样的东西......

    <?= 'The timezone is '.$user_time_zone->user_setting_value;?>
    

    这意味着您需要一个名为 $user_time_zone对象。 (使用 -> 访问的项目意味着一个对象)

    所以要在您的控制器中创建它,您需要类似...

    注意:我假设原始对象被称为 $user_time_zone

    $user_time_zone->user_setting_value = 'UTC'; // Assign value to the object
    $data['user_time_zone'] = $user_time_zone; // Assign the object to the view array.
    

    为了测试,我创建了一个带有索引方法的控制器,例如...

    public function index()
    {
        $user_time_zone = (object)['user_setting_value' =>'']; // Create the Object for testing
        $user_time_zone->user_setting_value = 'UTC'; // Assign value to the object
        $data['user_time_zone'] = $user_time_zone; //Assign the object to the view array.
    
        return view('page_view', $data);
    }
    

    与视图(page_view.php)一样

    <?= 'The timezone is '.$user_time_zone->user_setting_value;?>
    

    由此得出的结论是 $data['user_time_zone'] 需要是具有 user_setting_value

    属性的对象

    我希望这会有所帮助。如果还不清楚,就喊吧。

    【讨论】:

      猜你喜欢
      • 2020-09-12
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多