如何在Laravel 5.3中获取视图中的当前区域设置

时间:2017-01-06 12:46:03

标签: laravel laravel-5.3 blade laravel-blade

我正在制作一个双语应用。我为每个使用相同的路由,但我对两种语言使用不同的视图。每当我想重定向到我希望通过RefCell的路线时。在我传递use std::cell::RefCell; use std::rc::Rc; #[derive(Debug)] struct Foo { i: i32, } impl Foo { fn get(&self) -> i32 { self.i } fn incr(&mut self) { self.i += 1 } } fn retry<O, N>(mut operation: O, mut notify: N) -> i32 where O: FnMut() -> i32, N: FnMut() -> (), { operation(); notify(); operation() } fn something(f: &mut Foo) { let f_rc = Rc::new(RefCell::new(f)); let f_weak = Rc::downgrade(&f_rc); let operation = || { // f.get() let cell = f_weak.upgrade().unwrap(); let f = cell.borrow(); f.get() }; let notify = || { // f.incr(); let cell = f_weak.upgrade().unwrap(); let mut f = cell.borrow_mut(); f.incr(); }; retry(operation, notify); println!("{:?}", f_rc); } fn main() { let mut f = Foo { i: 1 }; something(&mut f); } 的地方,我想从视图中获取当前的区域设置值,然后将其传递给路径。请帮忙。

2 个答案:

答案 0 :(得分:23)

试试这个。它将在您的应用程序中设置区域设置

Config::get('app.locale')

编辑:

要在刀片中使用此功能,请使用以下内容,以回显刀片中的当前区域设置。

{{ Config::get('app.locale') }}

如果你想在它周围的刀片中做一个if条件,它就会变成,

   @if ( Config::get('app.locale') == 'en')

   {{ 'Current Language is English' }}

   @elseif ( Config::get('app.locale') == 'ru' )

   {{ 'Current Language is Russian' }}

   @endif

获取当前区域设置

app()->getLocale()

答案 1 :(得分:0)

首先创建一个区域设置路由和控制器:

Route::get('/locale/{lang}', 'LocaleController@setLocale')->name('locale');

class LocaleController extends Controller
{
    public function setLocale($locale)
    {
        if (array_key_exists($locale, Config::get('languages'))) 
        {
            Session::put('app_locale', $locale);
        }
        return redirect()->back();
    }
}

现在,您可以轻松地在每个页面中进行检查:

  $locale = app()->getLocale();
  $version = $locale == 'en' ? $locale . 'English' : 'Bangla';