2013-12-12 4 views
2

방금 ​​Laravel을 배우기 시작했으나 일을 끝내지 못했습니다. 나는 초보자이기 때문에 어디서 검색해야할지 모르겠다. 그러나 이것은 아이디어입니다 :Laravel 4 내 컨트롤러에서 경로 이름을 사용/가져 오기

  • 내 CMS 페이지에는 하나의 컨트롤러가 있습니다.
  • I 필드 이드 함량이 기존 DB가 - 제목 - 별칭을
  • '별칭'는 URL (같은 : http://site.tld/about-us)를 구축하는 데 사용됩니다
  • 그리고 난 내 라우팅이처럼 사용

    Route::get('about-us', array('uses' => '[email protected]')); 
    Route::get('article-1-title', array('uses' => '[email protected]')); 
    

나는 쉬운 방법을 찾기 위해 모든 것을 얻을 수 있지만 더 역동적 인 것이 필요합니다. 내가 알고 싶은 것은 : 경로 제목 (예 : 'about-us'또는 'article-1-title')을 사용하여 데이터베이스에서 ID를 얻으려면 어떻게해야합니까?

답변

3

Laravel documentation에 설명 된대로 Laravel에서 라우팅하는 선택적 매개 변수를 사용해야합니다.

routes.php에 다음을 추가하십시오. 이것은 색인 페이지를 제외한 다른 URL을 처리합니다. 다른 정적 URL이 필요한 경우이 줄 앞에 URL을 추가하십시오.

Route::get('/{alias}', array('uses' => '[email protected]')); 

이제 경로를 처리 할 컨트롤러를 정의해야합니다. 그것은이 같은 수 :

class CmsController extends BaseController { 

    public function showByAlias($alias) 
    { 
    $content = Cms::findByAlias($alias); 
    return View::make('cms.show')->with('content', $content)->with('title',$title); 
    } 

당신은 여전히 ​​검색 모델의 함수와 같은 Cms::findByAlias를 작성해야하고 데이터베이스에서 적절한 컨텐츠를 처리합니다. 물론 컨트롤러 내에서이 작업을 수행 할 수 있습니다.

URL 내에 유효하지 않은 별칭이 전달 될 경우를 대비하여 오류 처리를 추가해야합니다. 예 : 이 경우 404 오류 페이지가 표시됩니다.

힌트 : Laravel 응용 프로그램 내에서 매우 유사한 작업을하고 있습니다. 나는 모든 CMS 내용을 인하 형식으로 저장하고 Laravel 내에서 HTML로 변환하여 Parsedown을 사용하여보기에 전달합니다. 내 필요를 완벽하게 맞 춥니 다.

+0

Laravel 내가 사용하고있는 무슨에서 주위에 완전한 차례입니다. 그것은 제가 처음으로 작업 한 프레임 워크입니다. 모든 것이 이해되고 작동합니다 (라우팅, 컨트롤러, 모델 및 오류 처리). 고마워요! –

0

경로 모델 바인딩을 사용할 수 있습니다. 예를 들어

:

을 // 당신이 posts 테이블을 가지고 있고 당신이 Post 모델을 가정합니다. 컨트롤러에서

Route::bind('post', function($value, $route) { 
    return Post::whereTitle($value)->firstOrFail(); 
}); 


Route::get('article/{post}', array('uses' => '[email protected]')); 

:

Public function showByAlias(Post $post) 
{ 
    dd($post->id); 
} 

참조 :

http://laravel.com/docs/routing#route-model-binding