2015-01-14 4 views
0

는 일반적으로 리디렉션 및 데이터가 성공적으로 삽입됩니다리디렉션해야 왜 모델 laravel에 빈 페이지가 표시됩니까? 나는 다음과 같은 코드가 작동하는 이유를 묻고 싶습니다

CategoriesController :

public function store() 
    { 
     $data = Input::all(); 
     $category = new Term; 
     if($category->saveCategory($data)){ 
      return Redirect::route('admin_posts_categories')->withSuccess('Category successfully added.'); 
     }else{ 
      return Redirect::route('admin_posts_categories')->withError('Failed to add category. #ErrorCode : 13'); 
     } 
    } 

용어 모델 :

public function saveCategory($data){ 
    $this->name = $data['name']; 
    $this->slug = $data['slug']; 
    if($this->save()){ 
     $category_taxo = new TermTaxonomy; 
     $category_taxo->term_id = $this->lastCategoryId(); 
     $category_taxo->taxonomy = 'category'; 
     $category_taxo->description = $data['description']; 
     if($category_taxo->save()){ 
      return true; 
     }else{ 
      return false; 
     } 
    }else{ 
      return "#Error Code : 4"; 
    } 
} 

을 다음과 같은 데이터 만 삽입 하나 빈 페이지가 표시되고 리디렉션되지 않습니다.

CategoriesController :

public function store() 
    { 
     $data = Input::all(); 
     $category = new Term; 
     $category->saveCategory($data); 
    } 

또한 용어 모델

public function saveCategory($data){ 
    $this->name = $data['name']; 
    $this->slug = $data['slug']; 
    if($this->save()){ 
     $category_taxo = new TermTaxonomy; 
     $category_taxo->term_id = $this->lastCategoryId(); 
     $category_taxo->taxonomy = 'category'; 
     $category_taxo->description = $data['description']; 
     if($category_taxo->save()){ 
      return redirect::route('admin_posts_categories')->withSuccess('Category successfully added.'); 
     }else{ 
      return redirect::route('admin_posts_categories')->withError('Failed to add category.'); 
     } 
    }else{ 
      return redirect::route('admin_posts_categories')->withError('#Error Code : 4.'); 
    } 
} 

, 나는 몇 가지 관련 질문을하고 싶습니다, 내 코드는 디자인 패턴을 수정 준수 않고, 어디 모델에, 리디렉션을 넣어해야하거나 컨트롤러에?

+0

모델 내에 리디렉션 로직을 절대 배치하지 않아야합니다. laracasts.com에 방문하십시오. – Laurence

+0

여러 줄에 걸쳐있는 코드 블록에 '인라인 코드 서식 지정'을 사용하지 마십시오. 이러한 경우 실제로 들쑥날쑥 해지기 때문에 사용하지 마십시오. 예를 들어, 코드를 선택하고 편집기의 툴바에서'{}'아이콘을 클릭하여 4- 스페이스 들여 쓰기 된 코드 블록을 사용하십시오. –

답변

0

는 리디렉션이 시도 :

1. return Redirect::back()->withSuccess('Category successfully added.'); 

또는

2. return Redirect::to(URL::to('admin_posts_categories'))->withSuccess('Category successfully added.'); 

은 컨트롤러 내부에 리디렉션 로그인을 추가합니다. 모델 (권장하지 않음)에 넣으려는 경우에도 Ardent Hook 함수 즉 afterSave()를 사용하십시오.

+0

예상대로 첫 번째 솔루션 작업이 이전 경로로 리디렉션됩니다. 하지만 두 번째 해결 방법이 제대로 작동하지 않는 것 같습니다. ** admin_posts_categories **를 다른 명명 된 경로로 변경하면 원하는 경로가 아닌 이전 경로로 리디렉션됩니다. 어쨌든 나는 사업 논리에 모델을 사용하여 true 또는 false를 반환하고 리디렉션 기능을 위해 컨트롤러를 사용해야합니다. 미안해, 미안해. 그리고 고마워. 고마워. –

+0

도울 수있어서 좋았지 만 경로가 제대로 설정되지 않았거나 무언가가 아니라고 생각합니다. 프로젝트의 성명서를 모두 사용하고 완벽하게 작동합니다. 어쨌든 건배! –

0

우선 리다이렉트 로직을 모델에 넣지 마십시오. 모델은 비즈니스 로직을 구현하는 데 사용됩니다. 두 번째 것은 route.php에 admin_posts_categories의 경로를 만들었는지 여부와보기를 호출하는 방법을 확인합니다. 가능하다면 문제의 노선 코드를 게시하십시오.

+0

"결코 리디렉션 로직을 모델에 넣지 마십시오."+1 –

0

모델에 리디렉션을 넣지 않는 것이 좋습니다. 따라서 첫 번째 해결 방법은 두 가지 중에서 가장 좋은 방법입니다.

하지만 문제가 있습니다. 저장소 함수가 아무 것도 반환하지 않기 때문에 빈 페이지가 표시됩니다. return $category->saveCategory($data);하지만 이전에 설명한 것처럼이 방법은 모범 사례가 아닙니다.

훌륭한 조언은 Laracasts을 살펴 보는 것입니다. 이것은 당신이 알고 있고 모르는 Laravel에 관한 모든 것을 가르쳐 줄 것입니다.