Laravel可重复使用的阵列?

时间:2017-05-03 02:06:19

标签: laravel laravel-5.2

所以我有很多使用状态下拉列表的表单 - 发现这很有效:

                    {!! 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' ...等并使用@include,但那并不是似乎工作。尝试配置但没有骰子。也许我错了,但我似乎无法找到这个......

SO正在说这个问题:Laravel: Where to store global arrays data and constants?是一样的 - 但是没有一个是为选择框工作的......

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

将它们放入键/值表中,以便在某些时候使用数据库编辑而不是硬编码来编辑它们。如果您的申请必须在具有不同州名的国家/地区以外的地方工作,该怎么办?

e.g。像这样:https://github.com/delatbabel/keylists

关键功能是:Keyvalue::getKeyvaluesByKeyType()

e.g。 Keyvalue::getKeyvaluesByKeyType('usa_states')