【问题标题】:Laravel 5 and Angular Getting JSON From ControllerLaravel 5 和 Angular 从控制器获取 JSON
【发布时间】:2016-04-20 01:38:32
【问题描述】:

这更像是一个概念问题,如果不够具体,我深表歉意。

我来自 Jquery/AngularJS 背景;通常我在做前端的工作,只少量使用后端。

我正在尝试学习 Laravel 5 以扩展我的技能,但在概念上无法将我从 Angular 知道的内容与 Laravel 告诉我的内容结合起来。

我希望使用 Angular 为数据库提供 CRUD 功能,但我希望 Laravel 帮助我将该数据库从 MySQL 获取到 JSON,以便可以传递它。

我所做的是在 Laravel 中进行了以下操作:

~型号:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Pun extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */

     public $timestamps = false;
}

~控制器:

namespace App\Http\Controllers;

use App\Pun;
use App\Http\Controllers\Controller;

class PunController extends Controller
{
    /**
     * Show a list of all available puns.
     *
     * @return Response
     */
    public function index()
    {
        $puns = Pun::all();

        return Response::json($puns->toArray());
    }
}
}

~路线:

Route::get('showpunsfromdatabase', function () {
    return view('???');
});

上面的问号是我遇到麻烦的地方。如果我理解正确,控制器应该按照模型中的定义查询数据库,并将结果输出为 JSON。然后我如何将 Angular 引导到这个控制器,以便我可以使用 $http 服务获取这个 JSON?它是否必须进入一个视图然后将其拉入?我真的不希望它出现在“视图”中,我只希望 Angular 可以使用数据(JSON)。我这样想对吗?

我的角度控制器如下所示:

$scope.punGenerate = function(){
    $http.get("???").then(function (response) {$scope.thePunJSON = response.data;});
}

【问题讨论】:

    标签: php mysql angularjs json laravel


    【解决方案1】:

    如果你这样做:

    Route::get('showpunsfromdatabase', function () {
        return view('???');
    });
    

    您不是在调用控制器,而是直接返回视图。要调用控制器,您的路由应如下所示:

    Route::get('showpunsfromdatabase' ,  [
        'as' => 'showpunsfromdatabase.index',
        'uses' => 'PunController@index'
    ]);
    

    现在,您应该从控制器加载视图,包括模型返回的信息:

    <?php
    
    namespace App\Http\Controllers;
    
    use App\Pun;
    use App\Http\Controllers\Controller;
    
    class PunController extends Controller
    {
        /**
         * Show a list of all available puns.
         *
         * @return Response
         */
        public function index()
        {
            $puns = Pun::all();
    
            return view('???')
               ->with(['puns' => json_encode($puns)]);
        }
    }
    

    这只是一个例子,因为我不知道你到底在寻找什么。

    【讨论】:

    • 我返回的控制器中的视图是否应该与命名路由匹配? showpunsfromdatabase.index?
    • 也很抱歉,@index 从哪里来?
    • 不,只是一个别名。例如,如果你创建一个 FORM,你可以这样做:{!! Form::open(['route' => 'showpunsfromdatabase.index']) !!}
    • @index 是控制器中要调用的操作的名称。所以它就像:controller@action
    • 所以来自控制器的视图可以回显 Angular 的 json,这是正确的吗?您可以在答案中添加该视图的外观吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2015-08-16
    • 2015-11-05
    • 1970-01-01
    • 2018-10-04
    相关资源
    最近更新 更多