在 October Cms 中,我应该在哪里声明整个应用程序的配置

Where should I declare the configurations for entire application in October Cms

我必须设置一些常量值才能在应用程序的任何地方使用。我怎样才能设置这个常量。我正在尝试如下:

我将 STATUS 常量设置为 layouts/admin.htm

 function onStart()
{
    if(!Auth::getUser()){
        \Flash::error($this['theme_lang']['not_allowed']);
        return Redirect::intended('login');
    }

    $this['STATUS']  = [
        'PENDING' => 0,
        'PACKAGING' => 1,
        'PICKUP' => 2,
        'REPICKUP' => 3,
        'PICKUPDONE' => 4,
        'ASSIGNTODELEVER' => 5,
        'REASSIGNTODELEVER' => 6,
        'DELIVERED' => 7,
        'PAID' => 8,
        'RETURNTOHUB' => 9,
        'RETURNTOMERCHANT' => 10,
        'REFUSED' => 100,
    ];
}

这不是我使用的标准方式。我不能在整个应用程序中使用 STATUS 作为 GLOABL 常量。你能给我一些聪明的建议吗?

例如。我们有 users table,我们需要为其添加相关的状态信息

所以我们可以将它作为 static attribute 添加到 User 模型中

Ex. model: plugins\rainlab\user\models\User.php

<?php namespace RainLab\User\Models;

class User extends UserBase
{
    use \October\Rain\Database\Traits\SoftDelete;

    /**
     * @var string The database table used by the model.
     */
    protected $table = 'users';
    

    // HERE ----->
    public static $Status = [
        'PENDING' => 0,
        'PACKAGING' => 1,
        'PICKUP' => 2,
        'REPICKUP' => 3,
        // ... add more
    ]

    // .... other code  
}

Now, How to use it

// any where in php code
echo User::$Status['PENDING']; // output -> 0


// may be you need to pass it in twig section 
function onStart()
{
    $this['STATUS'] = User::$Status;
}

通过这种方式,您可以保留适当的信息,例如

  1. 此状态是关于用户的
  2. 将来如果您需要修改任何内容,只需在 User 模型中更新即可
  3. 易于参考和使用

如有疑问请评论。