【问题标题】:How to export a model function from a controller to a view in Laravel 4如何将模型函数从控制器导出到 Laravel 4 中的视图
【发布时间】:2013-10-16 09:25:05
【问题描述】:

我正在尝试显示我的数据库中的一些数据,这些数据依赖于用户的一些输入。我正在使用 ajax 请求来获取数据,将其发送回控制器中的函数,然后将其导出回我的视图。我想收集这些数据并在不转到另一个视图的情况下显示它(我只是隐藏以前的表单并取消隐藏新表单)。

以下是相关代码:

Javascript:

$('#submit_one').on('click', function(event) {
        event.preventDefault();

        if(! $(this).hasClass('faded')) {


        var fbid = $("input[name='like']:checked").val();
//variable to be collected is fbid


        request = $.ajax({ 
        url: "http://crowdtest.dev:8888/fans/pick_favorite", 
        type: "post", success:function(data){}, 
        data: {'fbid': fbid} ,beforeSend: function(data){
            console.log(data);
        } 
        });

        to_welcome_two();
        }

    });

function to_welcome_two()
{
    $('#welcome_one').addClass('hidden');
    $('#welcome_two').removeClass('hidden');
}

控制器功能:

public function pick_favorite() {

            $fbid=Input::get('fbid');

            return Artist::specific_artist($fbid);

        }

公共函数 getWelcome() {

        return View::make('fans.welcome')
        ->with('artists', Artist::artists_all())
        ->with('favorite_artist', Artist::favorite_artist())
        ->with('pick', FansController::pick_favorite());

    }

模型功能:

public static function specific_artist($fbid) {
        $specific_artist = DB::table('artists')
                        ->where('artists.fbid', '=', $fbid)
                        ->get();

        return $specific_artist;

    }

视图位于“欢迎”页面上。我的问题是如何在我的视图中显示模型数据并确保它从 fbid 输入中打印出正确的数据?

我尝试过这样的事情:

@foreach($pick as $p)
    <span class="artist_text">{{$p->stage_name}}</span>
    <br>
    <span class="artist_city">{{$p->city}}</span>
@endforeach

但这并没有打印出任何东西。有任何想法吗?

【问题讨论】:

    标签: javascript php ajax laravel laravel-4


    【解决方案1】:

    我在这里看到了很多问题。

    服务器端:

    public function pick_favorite().... 它有什么作用?它只是返回一些数据。

    public function getWelcome() { 中,您写道,FansController::pick_favorite()。假设两者是相同的方法,您正在访问一个静态方法,而该方法是非静态的。你得到了一个错误,但你没有看到它,因为你没有定义fail()

    我不明白声明一个什么都不做的方法有什么意义,然后你可以直接做一个模型调用。

    例如,假设我有一个fooModel

    public function index(){}
    

    在控制器中,我可以写,

    public function bar()
    {
      $model = new fooModel;
      return View::make(array('param1'=>$model->index()));
    
    }
    

    或者如果我将 fooModel 中的 index() 方法声明为静态,那么我可以编写,

    public function bar()
    {
        return View::make(array('param1'=>fooModel::index()));
    }
    

    客户端:

    现在在你的 javascript 中,

    $('#submit_one').on('click', function(event) {
        event.preventDefault();
    
        if(! $(this).hasClass('faded')) {
    
    
        var fbid = $("input[name='like']:checked").val();
    //variable to be collected is fbid
    
    
        request = $.ajax({ 
        url: "http://crowdtest.dev:8888/fans/pick_favorite", 
        type: "post", success:function(data){}, 
        data: {'fbid': fbid} ,beforeSend: function(data){
            console.log(data);
        } 
        });
    
        to_welcome_two();
        }
    
    });
    
    function to_welcome_two()
    {
        $('#welcome_one').addClass('hidden');
        $('#welcome_two').removeClass('hidden');
    }
    

    为什么要打印任何数据?您没有要求脚本打印任何内容。您的代码中的 .done.success 参数在哪里?

    如果你查看你的控制台,你会得到很多 php 错误,我几乎可以肯定。

    一个建议,你需要学习一些基础知识。例如jquery ajax 调用。

    a basic ajax call can be 
    
        var request = $.ajax({
    url: "script.php",
    type: "POST",
    data: { id : menuId },
    dataType: "html"
    });
    request.done(function( msg ) {
    $( "#log" ).html( msg );
    });
    request.fail(function( jqXHR, textStatus ) {
    alert( "Request failed: " + textStatus );
    });
    

    在你的代码中实现它,然后看看它会抛出什么错误。

    结论:

    第一个将是(假设您的其余代码都可以)静态错误。如果您想将其称为静态,请将其声明为静态。但是控制器中的静态函数?我看不出它有什么目的。

    然后开始调试。你的问题是客户端和服务器端。一一处理。

    【讨论】:

    • 你可以看到我的 ajax 代码中有成功参数。它出口 fbid 罚款。但我想要的是能够获得与这个 fbid 相关的其他数据。我没有收到任何错误。
    • 我看不到success 函数在哪里。
    • type: "post", success:function(data){}, data: {'fbid': fbid} ,beforeSend: function(data){ console.log(data); }
    • 您能否回答我的问题,是否有办法获取此 fbid 变量,并将其应用于模型函数以获取其他数据(不更改视图)?
    • 我错过了success:function(data){}。问题是这里的缩进。第二,你没有对数据做任何事情。至于你上面的问题,我没有得到这个问题。你能改写一下吗?
    猜你喜欢
    • 2013-09-24
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多