mardi 8 mars 2016

laravel 5: function dont work when I move it from routes to the controller

I try to use ajax on my project using laravel 5, and it work but only if I put the function on the routes file like this:

Route::post('/post/post_up',function(){
                                        if (Request::ajax()){
                                            $raa=Input::get('_user');
                                            if ($raa=='null') {
                                                return 'Vous devez connecter';
                                            }else{
                                            $already_vote = \App\Post_vote::where('user_id','=',Input::get('_user'))->where('post_id','=',Input::get('_post'))->count();
                                                if ($already_vote==0) {
                                                    $post = new \App\Post_vote;
                                                    $post->post_id=Input::get('_post');
                                                    $post->user_id=Input::get('_user');
                                                    $post->vote=1;
                                                    $post->save();
                                                    return 'Votre vote bien enregistre';
                                                }else{
                                                    return 'Vous avez déja voté pour ce sujet !';
                                                }
                                            }
                                        }
                                    });

But when I try to move this function from routes.php to my controller it doesn't work, I dont know why it work on routes.php and dont work in my controller. this is what i do:

1. On Routes.php:

Route::post('/post/post_up','VoteController@post_up');

2. VoteController.php:

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class VoteController extends Controller {

public function post_up()
{   
    if (Request::ajax()){
        $raa=Input::get('_user');
        if ($raa=='null') {
            return 'Vous devez connecter';
        }else{
        $already_vote = \App\Post_vote::where('user_id','=',Input::get('_user'))->where('post_id','=',Input::get('_post'))->count();
            if ($already_vote==0) {
                $post = new \App\Post_vote;
                $post->post_id=Input::get('_post');
                $post->user_id=Input::get('_user');
                $post->vote=1;
                $post->save();
                return 'Votre vote bien enregistre';
            }else{
                return 'Vous avez déja voté pour ce sujet !';
            }
        }
    }
}

}

3. Html And AJAX

<form id="post_up" action="#">
        <input type="hidden" name="_token" id="_token"  value="{{ csrf_token() }}">
        <input type="hidden" name="_post" id="_post"  value="{{ $post->id }}" />
        @if (!Auth::guest())
        <input type="hidden" name="_user" id="_user"  value="{{ Auth::user()->id }}" />
        @else
        <input type="hidden" name="_user" id="_user"  value="null" />
        @endif
        <button type="submit" class="btn btn-default" aria-label="Left Align">
            <span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span>
        </button>
    </form>

<script type="text/javascript" src="http://localhost:8080/js/jquery-2.2.1.js"></script>
<script type="text/javascript">

    $.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
    });


$(document).ready(function(){
    //pour vote up
    $('#post_up').submit(function(e){
        e.preventDefault();
        var _post = $('#_post').val();
        var _user = $('#_user').val();
        var _token = $('input[name="_token"]').val();
        var data = new FormData();
        data.append('_token',_token);
        data.append('_user',_user);
        data.append('_post',_post);

        $.ajax({
            type:"POST",
            method:"POST",
            url:"post_up",
            data:data,
            processData: false,
            contentType: false,
            success: function(data){
                alert(data);
            }
        });
    }); });</script>



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire