未定义变量:lang laravel



我遇到了一个问题,文件找不到变量'lang'。

{{ Form::open(['action' => 'loon.language']) }}
   {{Form::select('lang',['nl'=>'nl','po'=>'po'], $lang,['onchange'=>'submit()'])}}
   {{$lang = 'blaat'}}
   {{var_dump($lang)}}
{{ Form::close()}}

控制器:

public function postChangeLanguage() 
    {
        $rules = [
        'language' => 'in:nl,po' //list of supported languages of your application.
        ];
        $language = Input::get('lang'); //lang is name of form select field.
        $validator = Validator::make(compact($language),$rules);
        // $language = Session::get('language',Config::get('app.locale'));
        if($validator->passes())
        {
            Session::put('language',$language);
            App::setLocale($language);
        }
        else
        { /**/ }
    }

路线:

Route::get('language', array(
    'uses' =>'LoonController@postChangeLanguage',
    'as' => 'loon.language'
));

Filter.php:

App::before(function($request)
{
    $language = Session::get('language','nl'); //en will be the default language.
    App::setLocale($language);
});

我甚至试着调试它,仍然这个错误代码!

未定义变量:lang (View:/Users/nielsvandijk/loon/rekentool/app/views/partials/header.blade.php) (View:/Users/nielsvandijk/loon/rekentool/app/views/partials/header.blade.php)

有人能帮忙吗?

第一次使用$lang时,它显然还是空的。一个快速的解决方案是在它前面使用@ sing(允许它是未定义的)

{{Form::select('lang',['nl'=>'nl','po'=>'po'], @$lang,['onchange'=>'submit()'])}}
lang变量的作用是在select字段 中定义"selected"元素
{{Form::select('lang',['nl'=>'nl','po'=>'po'], 'po',['onchange'=>'submit()'])}}

这将导致:

<select name="lang">
 <option value="nl">nl</option>
 <option value="po" selected="selected">po</option>
</select> 

在控制器中,如果没有预先选择语言,您可以设置默认语言

View::make('view')->with('lang','nl');

最新更新