2015-11-06 62 views
1

因此,我最近決定將我的Slim2應用程序轉換爲較新的第三版本,很多應用程序必須更改等。Slim 3 - 更新的Flash消息返回兩個數組值

另一件事是閃存消息從核心框架中刪除,所以我決定去作曲家添加他們,我意識到他們也改變了太多,出於某種原因,我得到了一個具有兩個值的數組而不是一個。

$container['flash'] = function ($c) { 
    return new \Slim\Flash\Messages(); 
}; 

$this->app->flash->addMessage('error', 'hello'); 

$flash = $this->flash->getMessages(); 
print_r($flash); // returns Array ([error] => Array ([0] => hello [1] => hello)) 

我的模板顯然也抱怨這也因爲它是不是正確的類型

Notice: Array to string conversion in cache\66\664fc695876aa16573ce7a84cfe29c998af42da36e69199f149219a4e821d44a.php on line 80 Array 

我怎麼能使用閃光燈消息的相同方式使用Slim2他們?還是應該使用它們,是否有更好的選擇能夠完成同樣的工作?

回答

0

看着source調用getMessages()返回一個數組。如果你只想要一條消息,你可以使用getMessage()。例如getMessage("error")

+0

可悲的是我已經嘗試過這個功能,它仍然給了我同樣的結果有些道理的。這兩個函數的唯一區別是getMessage返回「[0] => hello [1] => hello」而不是「[error] => hello [1] => hello」。 – Pepzter9

+0

當前使用臨時解決方案:$ flash = $ this-> flash-> getMessage('error')['0'];直到找到更好的解決方案。 – Pepzter9

0

對於任何碰到這個問題的人:Slim會返回一個嵌套數組,並且需要遍歷這兩個數組。

foreach ($messages as $singlemessage) { 
    foreach ($singlemessage as $m) { 
     print("<li>{$m}</li>"); 
    } 
} 

這將採取每個消息集,然後單獨打印每個消息。錯誤「注意:數組到字符串的轉換」字面上告訴你,你試圖以字符串的形式打印數組,而你不能。

0

您需要將$container['flash']添加到您的view例如:twig。如果您正在使用TWIG渲染的觀點,那麼你加它像這樣$view->getEnvironment()->addGlobal('flash', $container['flash']);

然後在你查看{% flash.getMessage('error') %}