뷰 레이어에서 데이터를 반복하는 것 이상을 수행하지 마십시오. 사용
Route::get('/home', function()
{
//Here data is an array, normally you would fetch data
//from your database here and pass it to the View.
$data = array('this', 'is', 'my', 'data-array');
return View::make('my.view')->with(compact('data');
});
그것은 모두 라우팅 계층으로 시작 (BTW laravel에 환상적입니다.)
사용하여 폐쇄 : 기본적으로 laravel에서 정상적인 MVC 패턴은 다음과 같이 될 수있다 컨트롤러 (및 컨트롤러 방법)
//the same route is bound to a controller method
Route::get('/home','[email protected]');
Th
<?php
class HomeController extends BaseController {
//The function you call from your route
public function myFunction()
{
$data = array('this', 'is', 'my', 'data-array');
return View::make('my.view')->with(compact('data');
}
}
위의 예는 단지 MVC에서 VC 보여 주지만, 일반적으로 동일한 방식으로 모델로부터 데이터를 전달 : 위의 전자 컨트롤러는이 같은 것을 볼 수 있었다. Heres는 빠른 하나
: 컨트롤러
public function myFunction($user)
{
$userdata = User::find($user)->orderBy('firstname', 'desc');
$infodata = Event::find(1)->course;
return View::make('my.view')->with(compact('data', 'infodata');
}
에서
모델의 사용은 그래서 아이디어는 laravel은 여러 가지 방법으로 일을 할 수있다. 보조 앱이 있고 컨트롤러없이 관리 할 수 있다고 확신하면 컨트롤러를 건너 뛸 수 있으며 모든 것을 라우팅 레이어에 보관할 수 있습니다.
그러나 대부분의 응용 프로그램에서 컨트롤러는 응용 프로그램의 데이터 흐름을 제어하는 데 필요합니다.
MVC를 처음 사용하는 경우 주제에 대해 좀 알아보아야합니다.
편집 :
Ahaa! 따라서 모든 관점에서 데이터 일부를 공유하고 싶었습니다! 간단합니다. 모든 컨트롤러가 BaseController를 확장하기 때문에 거기에있는 데이터를 간단히 전달할 수 있습니다. 이렇게 :
class BaseController extends Controller {
public function __construct()
{
$data = array('alot', 'of', 'data');
return View::share('data', $data);
}
}
이제 데이터 변수를 모든보기에서 사용할 수 있습니다.
추신. 필터는 물건을 걸러 내고, 어떤 것이 "괜찮은지"확인하는 것과 같습니다. 이것은 인증 된 사용자를 확인하거나 제출 양식을 작성하는 것을 포함 할 수 있습니다.
"아니오"라고 말하면 일반적으로 View 계층에서 모델 논리를 갖는 것이 좋습니다. 보기에 필요한 것은 컨트롤러에서 가져와야하는 것입니다. – SamA
제 의견으로는 컨트롤러가 모델 (이 경우 데이터베이스)에 대한 변경이나 처리 지시를 원할 것입니다. 그러나 프리젠 테이션 계층에 들어갈 준비가 된 모델에서 요청한 정보를 요청할 때 아무런 문제가 없습니다. – Crackertastic
@Crackertastic 그는 모델 레이어에서 데이터를 요청하고 싶지 않습니다. 대신 그는 템플리트로 SQL 조회를 수행하려고합니다. 지난 번 내가 들었을 때, 그것은 기본적으로 스파게티 코드의 정의였습니다. –