从View laravel 4中调用控制器功能

时间:2014-09-05 11:41:35

标签: php laravel laravel-4 scope

大家好,我想知道如何解决这个问题...我正在构建一个laravel4应用程序,我想在我的controller中调用一个删除所有选定项目的函数在列表中。

这是我的view

<div class="panel panel-default">
        <div class="panel-heading">
            Twitter Winners
            <div class="pull-right btn-toolbar">
                <a href="{{action('AdminBaseController@deleteSelectedTweets')}}" class="btn btn-danger">Delete Selected</a>
                <a href="#"  class="btn btn-primary">Confirm Winners</a>
                <a href="#"  class="btn btn-primary">Generate New List</a>
            </div>
        </div>
        <div class="panel-body">
            <table class="table table-hover">
                <thead>
                    <tr>
                        <th>Delete</th>
                        <th>Tweet</th>
                        <th>Username</th>
                        <th>Name</th>
                        <th>To</th>
                        <th>From</th>
                    </tr>
                </thead>
                @foreach(Tweet::all() as $tweet)
                    <tr>
                        <td><input type="checkbox" name="delete_tweet" value="0"/></td>
                        <td>{{$tweet->tweet_text}}</td>
                        <td>{{$tweet->screen_name}}</td>
                        <td>{{$tweet->name}}</td>
                        <td><select name="origin">
                                <option value="0">Origin...</option>
                                <option value="1">Station 1</option>
                                <option value="2">Station 2</option>
                                <option value="3">Station 3</option>
                            </select>
                        </td>
                        <td>
                            <select name="destination">
                                <option value="0">Destination...</option>
                                <option value="1">Station 1</option>
                                <option value="2">Station 2</option>
                                <option value="3">Station 3</option>
                            </select>
                        </td>
                    </tr>
                @endforeach
            </table>

        </div>
    </div>

我想在用户选择此function时执行link

        <a href="{{action('AdminBaseController@deleteSelectedTweets')}}" class="btn btn-danger">Delete Selected</a>

我不想离开页面,这是我看到能够做到的唯一方式。

2 个答案:

答案 0 :(得分:2)

这是你需要的AJAX电话。

E.g。

点击删除按钮: - 获取所选项目 - 添加到要传递的AJAX数据 - 调用AJAX函数(你引用的函数) - 删除项目 - 更新Dom。

有太多的代码可以写入堆栈溢出,但建议你在进入之前用一些演示调查你的Jquery / Javascript方面。

答案 1 :(得分:-1)

使用Ajax,您需要: - 执行作业的控制器函数:AjaxController @ deleteTweet($ id)

假设您使用帖子表单来传输选定的推文。

查看: 首先为每个标记添加1个类。

<a href="{{action('AdminBaseController@deleteSelectedTweets')}}" tweet-id={{$tweetID}} class="tweet btn btn-danger">Delete Selected</a>


$(".tweet").click(function(e){
    e.preventDefault();
    var tweetId = $(this).attr('tweet-id');
    var node = $(this);

    $.ajax({
        url: {{ route_to_ajax_controller }} + "/" + tweetId,
        success: function(data){
            node.remove();
        },
        error: function(error){
           console.log(error);
        }
    });

})

Ajax是最好的解决方案。如果你想避免使用Ajax,你可以这样做:

AdminController中的

public function deleteSelectedTweets(){

// yours code

   return View::make("view-name"); // View from which you came here
}

这是一个简单的解决方案,您的页面应该加载速度快,并且您保持同一页面。