2017-03-06 125 views
0

我是Laravel的新手。我搜索了這個網站,但找不到具體的幫助。我想傳遞一個變量的值(這是$等)從控制器到刀片觀點,但瀏覽器提供Laravel 5.4 - 未定義變量:將變量從控制器傳遞到視圖

未定義變量的錯誤:像

這是我的觀點的一部分代碼(dashboard.blade.php):我的控制器的

@foreach($posts as $post) 
       <article class="post" data-postid="{{ $post->id }}"> 
        <div class="interaction"> 
         <a href="#" class="like">{{$Like }}</a> | 
        </div> 
       </article> 
@endforeach 

<script> 
     var token = '{{ Session:: token() }}'; 
     var urlLike = '{{ route('like') }}'; 
</script> 

部分(PostController.php)代碼:

public function LikePost(Request $request) // post type 
    { 

     $post_id = $request['postId']; // postId from script.js 
     $is_Like = $request['isLike'] === 'true'; // from script.js ... 

     $update = false; 
     $post = Post::find($post_id); 
     $user = Auth::user(); 
     $like = $user->likes()->where('post_id', $post_id)->first(); 

     $like->like = $is_Like; 
     $like->user_id = $user->id; 
     $like->post_id = $post->id; 

     $Like = $like ? $like->like == 1 ? 'You like this' : 'Like' : 'Like'; 
     return redirect()->route('dashboard')->with('Like', $Like); 
    } 

這裏是我的路線代碼的一部分:

//for like post 
Route::post('/like', [ 
    'uses'=> '[email protected]', 
    'as'=> 'like' 
]); 

這裏是我的script.js:

$('.like').on('click', function (event) { 
    event.preventDefault(); 
    postId = event.target.parentNode.parentNode.dataset['postid']; 
    // check whether previous element of like/dislike is null or not 
    var isLike = event.target.previousElementSibling == null; 

    $.ajax({ 
     method: 'POST', 
     url: urlLike, 
     data: { 
      isLike: isLike, 
      postId: postId, 
      _token: token 
     } 
    }).done(function() { 
     event.target.innerText = isLike ? event.target.innerText == 'Like' ? 'You like this' : 'Like' : event.target.innerText == 'Dislike' ? 'You dislike this' : 'Dislike'; 
     if (isLike) { 
      event.target.nextElementSibling.innerText = 'Dislike'; 
     } else { 
      event.target.previousElementSibling.innerText = 'Like'; 
     } 
    }); 
}); 

我試過在很多方面。但每次它顯示我一個錯誤的時間,

未定義的變量:像dashboard.blade.php

任何幫助,請.....

+0

我想通過擺脫這個開始:'$像= $喜歡? $ like-> like == 1? '你喜歡這個':'喜歡':'喜歡';「鏈接三元陳述是一種非常糟糕的做法。 – miken32

回答

1

您將會重定向到的路線,這反過來又來電它自己的控制器方法,將變量傳遞到dashboard.blade.php

當你做時,你實際上是閃動一些數據到會話。

當重定向到路由和閃爍變量時,您需要使用session('Like')訪問刀片中的變量。

@foreach($posts as $post) 
       <article class="post" data-postid="{{ $post->id }}"> 
        <div class="interaction"> 
        @if (session('Like')) 
         <div class="alert alert-success"> 
          <a href="#" class="like">{{ session('Like') }}</a> | 
         </div> 
        @endif 

        </div> 
       </article> 
@endforeach 

<script> 
     var token = '{{ Session:: token() }}'; 
     var urlLike = '{{ route('like') }}'; 
</script> 

在這裏閱讀更多https://laravel.com/docs/5.4/responses#redirecting-with-flashed-session-data

+0

使用會話沒有幫助。因爲在我的腳本中''is_Like = null'。因此'$ like-> like'的值也主要在我的控制器中。因此,當我使用會話時,我的視圖不會顯示任何選項,因爲它主要既不是0也不是1.您有什麼建議嗎?請... @Tamás –

相關問題