从视图 laravel 4 中调用控制器函数


Calling a controller function from within a View laravel 4

大家好,我想知道我该怎么做...我正在构建一个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>

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

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

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

这是您需要的 AJAX 调用。

例如

单击删除按钮:- 获取所选项目- 添加到要传递的 AJAX 数据- 调用 AJAX 函数(您引用的函数(- 删除项目- 更新多姆。

有太多的代码要写堆栈溢出,但建议你在直接进入之前通过一些演示来研究你的 Jquery/Javascript 方面的东西。

使用 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,你可以做这样的事情:

在管理控制器中

public function deleteSelectedTweets(){
// yours code
   return View::make("view-name"); // View from which you came here
}

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