2015-09-21 35 views
2

我試圖顯示閃存數據,但顯示不正確。它顯示:Laravel 5中的閃存數據

{{ Session::get('flash_message') }} 

,但它應該是信息

"Your article has been created" 

這有什麼錯我的代碼?謝謝!

在我的控制,我有:

public function store(ArticleRequest $request) 
{ 
    Auth::user()->articles()->create($request->all()); 

    \Session::flash('flash_message', 'Your article has been created'); 

    return redirect('articles');    
} 

app.blade.php是:

<!DOCTYPE html> 
    <head> 
    <meta charset="UTF-8"> 
     <title>App Name - @yield('title')</title> 
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> 
     <link rel="stylesheet" href="{{ elixir('css/all.css') }}"> 
     <script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script> 
     <script src="js/app.js"></script> 
    </head> 
    <body> 

     <div class="container"> 

      @if(Session::has('flash_message')) 
       <div class="alert alert-success">{{ Session::get('flash_message') }}</div> 
      @endif 

      @yield('content') 

     </div> 

     @yield('footer') 

    </body> 
</html> 

在我route.php我有以下幾點:大括號顯示內容爲字符串不變量。

<?php 
 
Blade::setContentTags('<%', '%>'); // for variables and all things Blade 
 
Blade::setEscapedContentTags('<%%', '%%>'); // for escaped data 
 

 
Route::get('/', function() { 
 
\t return 'Home Page'; 
 
}); 
 

 
Route::get('blade', function() { 
 
    return view('about'); 
 
}); 
 

 
    
 
Route::get('about', '[email protected]'); 
 

 
Route::get('foo', ['middleware' => 'manager', function() { 
 
\t return 'this page may only be viewed by managers'; 
 
}]); 
 
    
 

 
Route:resource('articles', 'ArticlesController'); 
 

 
Route::controllers([ 
 
\t 'auth' => 'Auth\AuthController', 
 
\t 'password' => 'Auth\PasswordController' 
 

 
]);

+0

是的,我寫了這個 - 看到我的代碼,但問題是,它顯示爲:'{{會話:: get('flash_message')}}'不是消息'「您的文章已經創建」 –

+0

你的代碼看起來很好,但你說的很奇怪!你可以顯示你的'routes.php'嗎?當重定向到「文章」時,你究竟做了什麼? – akmozo

+0

我創建了一篇新文章,然後重定向到所有文章。我的thisnk問題是{{花括號。它不顯示消息,但它顯示爲字符串。我會更新我的問題並添加路線。 –

回答

4

如果你有這個在你route.php

Blade::setContentTags('<%', '%>'); 

那麼這意味着你不能使用大括號刀片內容。試試這個:

@if(Session::has('flash_message')) 
    <div class="alert alert-success"> 
     <% Session::get('flash_message') %> 
    </div> 
@endif 

或簡單地從你的route.php刪除setContentTags()電話。

+0

我試試吧。非常感謝你! –

0

您可以製作多個消息並使用不同的類型。 按照下列步驟進行:

  1. 創建一個文件: 「app/Components/FlashMessages.php
namespace App\Components; 

trait FlashMessages 
{ 
    protected static function message($level = 'info', $message = null) 
    { 
     if (session()->has('messages')) { 
      $messages = session()->pull('messages'); 
     } 

     $messages[] = $message = ['level' => $level, 'message' => $message]; 

     session()->flash('messages', $messages); 

     return $message; 
    } 

    protected static function messages() 
    { 
     return self::hasMessages() ? session()->pull('messages') : []; 
    } 

    protected static function hasMessages() 
    { 
     return session()->has('messages'); 
    } 

    protected static function success($message) 
    { 
     return self::message('success', $message); 
    } 

    protected static function info($message) 
    { 
     return self::message('info', $message); 
    } 

    protected static function warning($message) 
    { 
     return self::message('warning', $message); 
    } 

    protected static function danger($message) 
    { 
     return self::message('danger', $message); 
    } 
} 
  • 在您的基本控制器 「app/Http/Controllers/Controller.php」。
  • namespace App\Http\Controllers; 
    
    use Illuminate\Foundation\Bus\DispatchesJobs; 
    use Illuminate\Routing\Controller as BaseController; 
    use Illuminate\Foundation\Validation\ValidatesRequests; 
    use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 
    use Illuminate\Foundation\Auth\Access\AuthorizesResources; 
    
    use App\Components\FlashMessages; 
    
    class Controller extends BaseController 
    { 
        use AuthorizesRequests, AuthorizesResources, DispatchesJobs, ValidatesRequests; 
    
        use FlashMessages; 
    } 
    

    這將使FlashMessages特性可用於該擴展此類的所有控制器。

  • 創建我們的消息的刀片模板: 「views/partials/messages.blade.php
  • @if (count($messages)) 
    <div class="row"> 
        <div class="col-md-12"> 
        @foreach ($messages as $message) 
         <div class="alert alert-{{ $message['level'] }}">{!! $message['message'] !!}</div> 
        @endforeach 
        </div> 
    </div> 
    @endif 
    
  • 開 「boot()」的 「app/Providers/AppServiceProvider.php」 的方法:
  • namespace App\Providers; 
    
    use Illuminate\Support\ServiceProvider; 
    
    use App\Components\FlashMessages; 
    
    class AppServiceProvider extends ServiceProvider 
    { 
        use FlashMessages; 
    
        public function boot() 
        { 
         view()->composer('partials.messages', function ($view) { 
    
          $messages = self::messages(); 
    
          return $view->with('messages', $messages); 
         }); 
        } 
    
        ... 
    } 
    

    這將使$messages變量在「views/partials/message.blade.php」模板被調用時可用。

  • 您的模板,包括我們的郵件模板 - 「views/partials/messages.blade.php
  • <div class="row"> 
        <p>Page title goes here</p> 
    </div> 
    
    @include ('partials.messages') 
    
    <div class="row"> 
        <div class="col-md-12"> 
         Page content goes here 
        </div> 
    </div> 
    

    你只需要包括郵件模板,無論你想在您的頁面上顯示消息。

  • 在你的控制器,你可以簡單地這樣做推的提示信息:
  • use App\Components\FlashMessages; 
    
    class ProductsController { 
    
        use FlashMessages; 
    
        public function store(Request $request) 
        { 
         self::message('info', 'Just a plain message.'); 
         self::message('success', 'Item has been added.'); 
         self::message('warning', 'Service is currently under maintenance.'); 
         self::message('danger', 'An unknown error occured.'); 
    
         //or 
    
         self::info('Just a plain message.'); 
         self::success('Item has been added.'); 
         self::warning('Service is currently under maintenance.'); 
         self::danger('An unknown error occured.'); 
        } 
    
        ... 
    

    希望it'l幫助你。