2016-01-14 4 views
2

Это скорее вопрос концепции, поэтому я приношу свои извинения, если он не является достаточно конкретным.Laravel 5 и Angular Getting JSON From Controller

Я исхожу из фона JQuery/AngularJS; обычно я занимаюсь внешними вещами и работаю с back-end экономно.

Я пытаюсь изучить Laravel 5, чтобы расширить свои навыки, но у меня возникли проблемы с концептуальным сочетанием того, что я знаю из Angular, о чем говорит мне Laravel.

Я хочу, чтобы функция CRUD использовалась в базе данных с использованием Angular, но я хочу, чтобы 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('???'); 
}); 

The вопросительные знаки выше где я испытываю проблемы. Если я правильно ее понимаю, контроллер должен запросить базу данных, как она определена в модели, и вывести результаты как JSON. Как мне затем направлять угловой на этот контроллер, чтобы я смог получить этот JSON, используя услугу $http? Должно ли это идти в точку зрения, которая затем втягивает его? Я действительно не хочу этого в «представлении», я просто хочу, чтобы данные (JSON) были доступны для Angular. Думаю ли я об этом правильно?

Мой угловой контроллер выглядит следующим образом:

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

ответ

1

Если вы сделаете это:

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

Вы не вызывая контроллер, вы возвращаете вид напрямую. Для вызова контроллера маршрут должен выглядеть следующим образом:

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

Теперь от контроллера вы должны загрузить вид, включая информацию, возвращенную модель:

<?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)]); 
    } 
} 

Это просто пример, потому что я не знаю, что именно вы ищете.

+0

Должно ли представление в контроллере, что я возвращаюсь, соответствует указанному маршруту? 'Showpunsfromdatabase.index'? –

+0

Также извините, где находится '@ index', исходящий из маршрута? –

+0

Нет, это просто псевдоним. Например, если вы создаете FORM, вы можете сделать: {!! Форма :: open (['route' => 'showpunsfromdatabase.index']) !!} –