【问题标题】:Laravel reusable arrays?Laravel 可重用数组?
【发布时间】:2017-09-30 16:29:14
【问题描述】:

所以我有许多使用状态下拉菜单的表单 - 发现这个效果很好:

                    {!! Form::select('state',array(
'AL'=>'Alabama',
'AK'=>'Alaska',
'AZ'=>'Arizona',
'AR'=>'Arkansas',
'CA'=>'California',
'CO'=>'Colorado',
'CT'=>'Connecticut',
'DE'=>'Delaware',
'DC'=>'District of Columbia',
'FL'=>'Florida',
'GA'=>'Georgia',
'HI'=>'Hawaii',
'ID'=>'Idaho',
'IL'=>'Illinois',
'IN'=>'Indiana',
'IA'=>'Iowa',
'KS'=>'Kansas',
'KY'=>'Kentucky',
'LA'=>'Louisiana',
'ME'=>'Maine',
'MD'=>'Maryland',
'MA'=>'Massachusetts',
'MI'=>'Michigan',
'MN'=>'Minnesota',
'MS'=>'Mississippi',
'MO'=>'Missouri',
'MT'=>'Montana',
'NE'=>'Nebraska',
'NV'=>'Nevada',
'NH'=>'New Hampshire',
'NJ'=>'New Jersey',
'NM'=>'New Mexico',
'NY'=>'New York',
'NC'=>'North Carolina',
'ND'=>'North Dakota',
'OH'=>'Ohio',
'OK'=>'Oklahoma',
'OR'=>'Oregon',
'PA'=>'Pennsylvania',
'RI'=>'Rhode Island',
'SC'=>'South Carolina',
'SD'=>'South Dakota',
'TN'=>'Tennessee',
'TX'=>'Texas',
'UT'=>'Utah',
'VT'=>'Vermont',
'VA'=>'Virginia',
'WA'=>'Washington',
'WV'=>'West Virginia',
'WI'=>'Wisconsin',
'WY'=>'Wyoming',
) ,
Input::old('state'),
array(
'class'       => 'zip-lookup-field-state-short'
))
!!} 

但这出现在整个站点的多个表单中 - 我如何将状态数组放在某处并将其包含在刀片视图中?我试过把它放在一个数组 $states = 'Al'=>'Alabama'...etc 并使用@include,但这似乎不起作用。尝试了一些带有配置但没有骰子的东西。也许我搜索错了,但我似乎找不到这个......

所以说这个问题:Laravel: Where to store global arrays data and constants? 是一样的 - 但这些解决方案都不适用于选择框...

【问题讨论】:

标签: laravel laravel-5.2


【解决方案1】:

我喜欢为这些类型的东西拥有自己的帮助文件。

app
| -- helpers.php

然后在composer.json 中找到files: 块并添加:

['app/helpers.php']

然后你可以把 states 数组放在那里

if (!function_exists('us_states')) {
    function us_states() {
        return [
            'AL'=>'Alabama',
            'AK'=>'Alaska',
            'AZ'=>'Arizona',
            'AR'=>'Arkansas',
            'CA'=>'California',
            'CO'=>'Colorado',
            'CT'=>'Connecticut',
            'DE'=>'Delaware',
            'DC'=>'District of Columbia',
            'FL'=>'Florida',
            'GA'=>'Georgia',
            'HI'=>'Hawaii',
            'ID'=>'Idaho',
            'IL'=>'Illinois',
            'IN'=>'Indiana',
            'IA'=>'Iowa',
            'KS'=>'Kansas',
            'KY'=>'Kentucky',
            'LA'=>'Louisiana',
            'ME'=>'Maine',
            'MD'=>'Maryland',
            'MA'=>'Massachusetts',
            'MI'=>'Michigan',
            'MN'=>'Minnesota',
            'MS'=>'Mississippi',
            'MO'=>'Missouri',
            'MT'=>'Montana',
            'NE'=>'Nebraska',
            'NV'=>'Nevada',
            'NH'=>'New Hampshire',
            'NJ'=>'New Jersey',
            'NM'=>'New Mexico',
            'NY'=>'New York',
            'NC'=>'North Carolina',
            'ND'=>'North Dakota',
            'OH'=>'Ohio',
            'OK'=>'Oklahoma',
            'OR'=>'Oregon',
            'PA'=>'Pennsylvania',
            'RI'=>'Rhode Island',
            'SC'=>'South Carolina',
            'SD'=>'South Dakota',
            'TN'=>'Tennessee',
            'TX'=>'Texas',
            'UT'=>'Utah',
            'VT'=>'Vermont',
            'VA'=>'Virginia',
            'WA'=>'Washington',
            'WV'=>'West Virginia',
            'WI'=>'Wisconsin',
            'WY'=>'Wyoming',
        ];
    }
}

那你可以拨打us_states()

如果您遇到错误,请确保您使用php artisan optimizecomposer dump-autoload

【讨论】:

  • 使用helpers 文件对我来说总是一种代码味道。使用view composer 会更好,而且是真正的 OOP。
【解决方案2】:

将它们放入键/值表中,以便在某些时候可以通过使用数据库编辑而不是硬编码来编辑它们。如果您的应用程序必须在美国以外的州名不同的国家/地区运行怎么办?

例如像这样:https://github.com/delatbabel/keylists

关键函数是这个:Keyvalue::getKeyvaluesByKeyType()

例如Keyvalue::getKeyvaluesByKeyType('usa_states')

【讨论】:

    猜你喜欢
    • 2014-11-20
    • 2021-02-07
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2020-03-09
    • 1970-01-01
    相关资源
    最近更新 更多