2017-01-31 41 views
0

在symfony應用程序中,如何將變量$dynamicPart = 'I always change!';轉換爲throw new NotFoundException('error.static.dynamic');以便獲取下面的消息?將變量傳遞給動態異常消息以供轉換器在樹枝模板中使用

{ 
    "error": { 
    "code": "error.static.dynamic", 
    "message": "Dynamic message is invalid - "I always change!"." 
    } 
} 

靜態版本工作正常,因爲它始終是相同的,所以這個throw new NotFoundException('error.static.invalid');將successfuly輸出:

{ 
    "error": { 
    "code": "error.static.invalid", 
    "message": "Static message is invalid." 
    } 
} 

當前代碼

messages.en.yml

error: 
    static: 
     invalid: Static message is invalid. 

    dynamic: 
     invalid: Dynamic message is invalid - "%dynamicPart%". 

exception.json.twig

{ 
    { 
    { 
     'error': { 
     'code': exception.message, 
     'message': exception.message|trans 
     } 
    }|json_encode|raw 
    } 
} 

如果我使用:

throw new NotFoundException(
    $this->translator->trans(
     'error.static.dynamic', 
     ['%dynamicPart%' => 'I always change!'] 
    ) 
); 

然後我得到:

{ 
    "error": { 
    "code": "Dynamic message is invalid - "I always change!".", 
    "message": "Dynamic message is invalid - "I always change!"." 
    } 
} 

回答

0

在您的枝杈:

{ 
    { 
    { 
     'error': { 
     'code': exception.message, 
     'message': 'error.dynamic.invalid'|trans({"%dynamicPart%": dynamicPartValue}) 
     } 
    }|json_encode|raw 
    } 
} 
+0

我我會讓你知道我檢查它,但現在被其他東西阻塞。謝謝。 – BentCoder

+0

只是再次檢查你的答案。我試圖通過消息獲得密鑰('error.dynamic.invalid')。你應該假設你永遠不會知道'error.dynamic.invalid'。 – BentCoder

+0

我使用您的messages.en.yml文件的關鍵字構建了我的答案。我實際上有點困惑,因爲你顯示3個不同的鍵:error.dynamic.invalid,exception.message和error.static.dynamic – OlivierC

相關問題