我正在使用Laravel 4,我正在创建一个身份验证应用。我陷入了一个我想要实现的非常小的功能,但对我来说它是必需的。当用户登录时,我想从我的语言文件中显示“问候”的随机数组,如“Howdly,username”或“Hey there,username”等。有什么方法可以做到吗?
我尝试过类似的东西:
{{ array_rand(trans('en.greetings') }}
但它会显示为每个字符串指定的变量(例如hey_there应该是“Hey there”)
我的阵列:
"greetings" => array(
"howdly" => "Howdly",
"hello" => "Hello",
"hello_there" => "Hello there",
"hey" => "Hey",
"arr" => "Arr"
),
答案 0 :(得分:1)
每次都可以随机播放数组并打印第一个索引
//I am creating an array here, but you could assign whatever
$greetings = array(
"howdly" => "Howdly",
"hello" => "Hello",
"hello_there" => "Hello there",
"hey" => "Hey",
"arr" => "Arr"
);
shuffle($greetings);
echo reset($greetings); //will print the first value, you can return it or assgn it to a variable etc
答案 1 :(得分:1)
我有类似的用例,我必须将随机字符串返回给用户。我正在使用Laravel 5,这就是我解决它的方法。您的语言文件可能如下所示:
return[
"greeting_1"=>"myString 1",
"greeting_2"=>"myString 2",
"greeting_3"=>"myString 3",
];
我added a custom helper到我的应用程序并编写了一个帮助方法来随机选择响应。我的方法如下:
function getRandomPrompt($key,$params=array()){
$key=explode(".",$key);
if(count($key)!= 2)
throw new Exception("Invalid language key format");
$file=$key[0];
$msgKey=$key[1];
//Get all the keys of the file
$keys_from_file=Lang::get($file);
//Filter all the prompts with this key
foreach ($keys_from_file as $file_key=>$value){
$key_parts=explode("_",$file_key);
if(($key_parts[0])!==$msgKey)
unset($keys_from_file[$file_key]);
}
$selected_key=array_rand($keys_from_file);
if(count($keys_from_file)>=1)
return Lang::get($file.".".$selected_key,$params);
else
return($file.".".$msgKey);
}
此帮助程序只查找所有可能的键,并随机返回一个字符串。您还可以将参数数组传递给它。现在,只要您想要一个字符串,就可以通过调用getRandomPrompt("filename.greeting")
答案 2 :(得分:0)
正在寻找类似的东西,但最终我找到了另一个解决方案。
在您的lang文件中:
return [
'String',
'Thong',
'Underwhere?',
];
您的刀片解决方案:
{{ __('messages')[array_rand(__('messages'))] }}