2017-03-06 27 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'の値は、主に私のコントローラではnullです。したがって、セッションを使用すると、私のビューには何も表示されません。なぜなら、主に0でも1でもないからです。あなたが私に提案できるものは何ですか?してください... @Tamás –

関連する問題