2015-04-23 44 views
3

我有問題。Laravel 5 Lang :: get()替換

您可以使用Laravel 5中的Lang :: get(),我想做一個替換字符。

資源/郎/ EN/messages.php

<?php 
    return array(
    'test' => 'test message. :name', 

的意見/ top.blade.php

{!! App::setLocale('en') !!} 
{!! Lang::get('messages.test', array('name' => 'Dayle')) !!} 

然而,這是一個錯誤。

ErrorException in Translator.php line 148: 
Missing argument 2 for Illuminate\Translation\Translator::Illuminate\Translation\{closure}(), called in /home/my-site/www/my-site/vendor/compiled.php on line 11547 and defined (View: /home/my-site/www/my-site/resources/views/top.blade.php) 

原因我不知道。

你認識的人不?

+0

同樣在這裏的問題作曲家更新 – dynamic

+0

後,我通過刪除所有緩存文件,解決了這個問題。 (觀點,編譯等) – dynamic

+0

也有同樣的問題,在我的情況下,問題是我寫了[':name'=>'Dayle']。我在'name'之前刪除了冒號,並且它工作正常。 – mwallisch

回答

-1

也許你可以嘗試推薦的語法 - >Lang::get('messages.test', ['name' => 'Dayle'])

更新:

,你也可以嘗試輔助功能:

{{ trans('messages.test', array('name' => 'Dayle')) }} 

取出,在這條線test' => 'test message. :name',結束也將在更好地App::setLocale('en')您控制器,而不是在視圖中,但這只是最佳實踐,可能不是問題的原因。

+0

有什麼區別? –

+0

不幸的是,它並沒有治癒。是一樣的。 – hiro

+0

不治癒。是一樣的。 – hiro

0

在message.php中使用括號: 'test'=>'測試消息。 (:name)',

另外,看着你的錯誤消息,我認爲 {! App :: setLocale('en')!!} 由於某種原因,出於某種原因出現了問題,所以只需將其刪除即可,沒有它就可以使用,我試過了。

另外,加 用\ Lang; 在您的控制器中。

1

我只是通過以下步驟here

總之,請嘗試以下步驟解決此問題:

  1. 刪除供應商/ compiled.php和存儲/框架/ compiled.php
  2. 運行composer update如果沒有自動運行,請運行php artisan optimise再次編譯。
  3. 在messages.php文件用雙引號(例如"title" => "Value in double qoutes"
  4. 運行composer dump-autoload -o