Codeigniter에서 몇 달을 보냈다가 laravel 4를 처음 접했을 때 laravel에 대한 많은 자습서를 살펴 보았습니다. 분명히 밝히고 싶은 것은 laravel의 Routes와 Controller 사이의 실제 차이점입니다. 왜냐하면 컨트롤러와 라우트 모두에서 뷰를 생성하고 생성 할 수 있습니다. 루트와 컨트롤러를 사용할 때 누구나 간단히 설명해 줄 수 있습니까? 다른 프레임 워크에서는 앱 내에서 특정 URL을 지정하는 경로가 필요하기 때문에 Controller는 실제 작업을 수행하는 데 사용되었지만 라우트에서는 라우팅 메커니즘을 제외하고 Route의 기본 개념을 얻지 못했습니다.Laravel :: 경로 대. 컨트롤러
답변
Routes::any()
에서보기 또는 많은 작업을 수행 할 수 있다는 사실은 MVC 및 논리 분리에 대한 것입니다.
Route::get("admin", function(){})
에서 실제로는 표준 라우팅 방식으로 컨트롤러에 바인딩해야하는 경로 콜백에 빠르게 액세스 할 수 있습니다. 하지만 Laravel을 사용하면 컨트롤러에 바인딩하는 대신 폐쇄 (function(){}
)에서 작업을 수행 할 수 있습니다. 어쨌든, 그것은 당신을 허용하지만, 당신은 그것을 피하는 것이 좋습니다. Route::get()
에서는 '라우팅'만 있으면됩니다.
테스트 또는 일부 사소한 요청이없는 한 Route에서 콜백을 사용할 이유가 없습니다.
Route::get("admin", function(){
return View::make("admin_index");
});
을 그리고 오히려이 함께 할 것입니다 : 그래서, 더 나은이를 방지하기 위해
Route::controller("admin", "AdminController");
그리고 당신의 AdminController.php
에서을 :
// I mean create a file named AdminController.php in controllers directory under app.
class AdminController extends Controller
{
function getIndex()
{
return View::make("admin_index");
}
}
더 읽기에 대한 Route::controller
하고 편안한 컨트롤러.
일부 주 :
당신의 경로에 클로저를 추가 할 수있는 기능을 갖는 당신이 경로에 복잡한 의사 결정을 내리고 강력한 라우팅 시스템을 사용할 수 있습니다.
이 콜백을 통해 경로에 조건을 추가 할 수 있습니다. 당신이 경로에서 분리
갖는 컨트롤러는 응용 프로그램
더 확장 덜 혼란을하고 앞으로 더
편안하게 다른 코더한다.이렇게하면 문제에 더 집중하고 솔루션을 찾을 수 있습니다.
이 물리적 분리는 매우 중요합니다. Route 내에 View :: make()
을 사용하면 모든 문제가 서로 관련되어 코더에 대해
혼동을 일으킬 수 있습니다.
의 우리는 두 경우 모두에서 무슨 보자 : 여기
$route['blog/joe'] = "blogs/users/34";
당신이 application.com/blog/joe
를 방문하십시오 CodeIgniter의에서
, 경로는 컨트롤러의 특정 방법에 요청을 가리키는 컨트롤러 BlogsController
을 호출하고 users()
메서드를 호출하고 첫 번째 매개 변수로 34를 전달합니다. 다른 건 없어. 그들이 말했듯이, CI의 경로는 URL 문자열과 해당 컨트롤러 클래스/메소드 간의 일대일 관계 일뿐입니다.
- 직접
- 당신은 특정 컨트롤러에 요청을 가리킬 수 있습니다 당신은보기를 반환 할 수있는 간단한 응답
- 를 반환 할 수 있습니다
이제 Laravel, 당신은 많은 가능성을 가지고 당신은 폐쇄 일부 로직을 작성하고 다음
당신은의를 추가 할 수 있습니다를 수행 할 작업을 결정할 수 있습니다
많은 것들을 할 수있는 이유는 무엇입니까? 그것은 당신에게 당신이 필요로하는 어떤 방법으로 그들을 사용할 수있는 힘을줍니다. 예 :
정적 HTML을 렌더링 할 필요가있는 작은 웹 사이트가 필요합니까? 이처럼 그들을 사용
Route::get('/', function() { return View::make('greeting'); });
전통적인 MVC 패턴을 사용하여 더 큰 응용 프로그램이 필요하십니까? 다음과 같이 사용
Route::get('user/{id}', '[email protected]');
이 편안하고 접근이 필요하십니까? 문제 없어. 이 모든 CRUD 방법에 대한 경로를 생성합니다
Route::resource('photo', 'PhotoController');
는 특정 Ajax 요청을 처리하기 위해 신속하고 더러운 뭔가를 필요하십니까? 없이 또는 약간의 논리와 매우 간단한 일 경우 컨트롤러 대신 사용할 : DR을,
Route::post('foo/bar', function() { return 'Hello World'; });
TL : 간단하게. 그렇지 않으면 항상은 MVC 원칙을 고수하고 컨트롤러로 연결하여 실제 작업을 수행합니다.
Laravel에서는 컨트롤러를 건너 뛰고 비즈니스 논리를 수행하고 경로에서보기를 생성하는 작업을 수행 할 수 있습니다.
E.g I have a link b2.com/getUsers so in routes.php I can write:
Route::get('/getUsers',function()
{
$users=User::All(); //select * from users
return View::make('allUsers')->with('users',$users);
}
그래서, 여기에 우리가 전혀 컨트롤러를 사용하지 않았고 당신이 아주 잘 응용 프로그램의 모든 요청을 처리하기 위해이 작업을 수행 할 수 있습니다, 모두 얻을 요청 b2.com/getUsers를 제공하고 게시하다.
그러나 애플리케이션이 크고 복잡한 비즈니스 로직을 가진 500 개 이상의 URL을 가지고 있다면 모든 것을 하나의 routes.php에 넣는 것을 상상해보십시오. 그것은 완전히 그것을 형사상 지저분하게 만들 것이며 건축의 모든 목적은 무너질 것입니다. 따라서 우리가 일반적으로 할 만 라우팅과 나는 보통 로그인에 대한 예 관련 활동을위한 컨트롤러를 만들
So the same example can be solved as:
To handle link: b2.com/getUsers
In routes.php
Route::get('/getUsers',array('before'=>'auth','uses'=>'[email protected]'));
MyController has the method getUsers defined like this:
public function getUsers()
{
$users=User::All(); //select * from users
return View::make('allUsers')->with('users',$users);
}
(컨트롤러 내부 뷰의 생성과 함께) 모든 비즈니스 로직을 작성하기위한, 예비 routes.php입니다/가입/로그 아웃 내가 AuthController 및 가 routes.php 통해 AuthController로 연결됩니다 그 활동에 관련된 모든 링크를 만들 수는
- 1. Laravel 경로 컨트롤러
- 2. 라우트 대 컨트롤러 in Laravel
- 3. Laravel csrf_token(); 보기 대 컨트롤러?
- 4. Laravel 4 리소스 컨트롤러 경로 수정
- 5. 경로 : 컨트롤러 단위 테스트 문제 Laravel
- 6. 이해 REST 컨트롤러 Laravel
- 7. Laravel 5.1 - 내 컨트롤러
- 8. 컨트롤러 생성자 Laravel
- 9. laravel 5 라우팅 컨트롤러
- 10. Laravel 변수 ID 컨트롤러
- 11. Laravel 다이나믹 경로
- 12. 경로 컨트롤러
- 13. Laravel 중첩 경로 문제
- 14. Laravel : 포함 된보기에서 컨트롤러 사용
- 15. Laravel 컨트롤러 미들웨어에서 모든 비 경로 동작을 제외해야합니까?
- 16. 정의 경로 던지는 컨트롤러 방법을 찾을 수 없습니다 laravel 4
- 17. Laravel 경로에서 컨트롤러 또는 경로 매개 변수로 컨트롤러에서 경로로
- 18. Laravel Routes.php의 통화 컨트롤러 기능
- 19. laravel 컨트롤러 restfull 및 형태
- 20. 컨트롤러 방법은 Laravel
- 21. 새 컨트롤러 만들기 Laravel
- 22. Laravel 4의 중첩 컨트롤러
- 23. Laravel 컨트롤러 레이아웃 테스트
- 24. Laravel 컨트롤러 구성
- 25. Laravel 4 설정 컨트롤러
- 26. Laravel 기본 컨트롤러 방법
- 27. 새 컨트롤러 실수 Laravel
- 28. 모델/컨트롤러 변수 - Laravel
- 29. Laravel 컨트롤러 멤버 변수
- 30. Laravel 컨트롤러 테스트
이 경로 라우팅 작업 만 할 수 있도록 다른 모든 로직은 컨트롤러 내부에 존재하게 의미 ~이다 tter utility yes? –
@Syco Uraz 컨트롤러 내부의 모든 논리는 아니지만 경로 외부의 모든 논리. 다른 논리가 컨트롤러, 모델 및 라이브러리로 분할되어야하기 때문에 ... –